エクセルのマクロについての質問です。


名前、回数が並んでいる列を名前ごとに、回数の降順で
ならべて、名前ごとに一番のところに ○をつけたいのです。
マクロでどう書くといいのでしょうか?

a 3
b 2
a 5
c 1
b 4
のようになっているのを
a 5 ○
a 3
b 4 ○
b 2
c 1 ○

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/06/27 14:18:56
  • 終了:2009/07/04 14:20:02

回答(2件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912009/06/27 14:38:51

ポイント35pt

データが A:B列にあることを想定していますが、このような感じでしょうか。

Sub sortAndMarkTop()
   Columns("C").Clear
   
   Columns("A:B").Sort _
        key1:=Range("A1"), order1:=xlAscending, _
        key2:=Range("B1"), order2:=xlDescending

    Dim lastRow As Long
    lastRow = Range("A" & Rows.Count).End(xlUp).Row
    
    Range("C1").Value = "○"
    For r = 2 To lastRow
        If Cells(r, "A").Value <> Cells(r - 1, "A").Value Then
            Cells(r, "C").Value = "○"
        End If
    Next
End Sub

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_sort.html

id:jccrh1 No.2

jccrh1回答回数111ベストアンサー獲得回数192009/06/27 19:26:54

ポイント35pt

数式だけでできます。

  A B  C
1 a 3 
2 b 2
3 a 5  ○
4 c 1  ○
5 b 4  ○

上記の表と仮定し

 C1は =IF(B1=MAX(IF($A$1:$A$6=A1,$B$1:$B$6,0)),"○","") と入力し
 最後に CTRL + SHIFT + ENTER を押下してください。
 見た目は前後に{ } がつきます。
  {=IF(B1=MAX(IF($A$1:$A$6=A1,$B$1:$B$6,0)),"○","")}

後はC2:C5に複写してください。

  

※必要なら降順に並べても良いですが、並べなくても良いです。

ダミーURL:http://q.hatena.ne.jp/1246079934

id:kaiketsu

a 5 のみに ○がつきます。

2009/06/28 13:32:10
  • id:taknt
    ただ ソートしてやればいいじゃん。
  • id:jccrh1
    > a 5 のみに ○がつきます。
    私は再度試したのですが、できました…。

    計算式を入力後に 【CTRL + SHIFT + ENTER】 を押さないと、a 5 のみになります。
    再度確認をお願いします。
  • id:kaiketsu
    >計算式を入力後に 【CTRL + SHIFT + ENTER】 を押さないと
    押すと数式がそのまま見えるようになって動かないようです。
    2003 だからでしょうか?
  • id:jccrh1
    >押すと数式がそのまま見えるようになって動かないようです。
    >2003 だからでしょうか?

    私も2003ですが、2000以上ならできると思います。
    数式バーには
    {=IF(B1=MAX(IF($A$1:$A$6=A1,$B$1:$B$6,0)),"○","")}
    と表示されますが、セルには"○"が表示すると思いますが…

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません