プロが教えるわが家の防犯対策術!

A列のA2からA21に氏名、B列のB2からB21に住所が入力済です。A列で重複しているデータに色をつけて、さらに並び替えをしたいと思います。色は黄色、並び替えの設定は黄色で色を付けたセルがA2から順に表示するVBAを教えていただけませんでしょうか。またお手数でも列をB列、C列に変更した場合についても教えていただけませんでしょうか。VBAコードの貼り付けはできます。よろしくお願いします。

A 回答 (3件)

こんにちは!


一例です。

Sub test()
Dim i As Long
Range("A2:B21").Sort key1:=Cells(2, 1), order1:=xlAscending
Columns("A").Insert
For i = 2 To 21
If WorksheetFunction.CountIf(Columns("B"), Cells(i, "B")) > 1 Then
Range(Cells(i, "B"), Cells(i, "C")).Interior.ColorIndex = 6
Cells(i, "A") = i
Else
Cells(i, "A") = WorksheetFunction.CountA(Columns("B")) + i
End If
Next i
Range("A2:C21").Sort key1:=Cells(2, "A"), order1:=xlAscending
Columns("A").Delete (xlToLeft)
End Sub

こんな感じではどうでしょうか?
コード内にデータとは関係ない列番号「C」が入っていますが、気になれば最後の行
Columns("A").Delete (xlToLeft)
を削除してマクロを試してみてください。

参考になれば良いのですが・・・m(__)m
    • good
    • 2
この回答へのお礼

早速の回答ありがとうございました。詳細のコードを記載していだだき感謝です。記載していだだいたVBAをお手本にしてやってみます。ご指導ありがとうございました。

お礼日時:2011/04/26 11:54

VBAの一例です。


表の範囲を変えるなら、Range("A2:B21") のところを変更してください。
なお、以下のコードは、並び替えのため表の右となりの一列を作業列に使用してますので、表の右となりの一列は空白にして置いてください。

Sub Sample01()
  Dim Rng As Range, c As Range, c2 As Range
  Dim n As Long, i As Long
  Set Rng = Range("A2:B21").Columns
  For Each c In Rng(1).Cells
    n = 0
    For Each c2 In Rng(1).Cells
      If c.Value = c2.Value Then
        n = n + 1
        If n > 1 Then
          c.Resize(, 2).Interior.ColorIndex = 6
          c2.Resize(, 2).Interior.ColorIndex = 6
          i = i + 1
          If IsEmpty(c.Offset(, 2)) Then
            c.Offset(, 2) = i
          End If
          If IsEmpty(c2.Offset(, 2)) Then
            c2.Offset(, 2) = i
          End If
        End If
      End If
    Next c2
  Next c
  Rng.Resize(, 3).Sort Key1:=Rng(2).Offset(, 1).Cells(1), Order1:=xlAscending, Header:=xlNo
  Rng(2).Offset(, 1).ClearContents
End Sub
    • good
    • 1
この回答へのお礼

回答、誠にありがとうございました。詳細なコードを記載していただきお手数をおかけしました。コードを参考に勉強します。時間をかけてやってみます。

お礼日時:2011/04/26 11:50

あまり勉強もしないで丸投げしているようだ。


>列をB列、C列に変更した場合についても教えていただけませんでしょうか
など言っているレベルでは、現状では、VBAは無理でしょう。
VBAを使わないでも、条件付書式で出来るのでは。
A2:A10など範囲指定
書式ー条件付書式ー数式がー式は =COUNTIF($A$2:A2,A2)>1
書式を設定
これで重複する氏名で2番目以後の行に色をつけられる。

上記の操作をマクロの記録で取る方法もある。
ーー
条件付書式を離れて
下記は要素的にはマクロの記録を採れば判る。
(1)セルに色を着ける
(2)黄色とかの色指定
(3)並べ替え
 ただし重複チェックはエクセルの操作ではない。上記のように関数では出来る。これを関数を使わず、VBAプログラムでやるのは、VBAでも中級以上のレベルでしょう。
    • good
    • 1
この回答へのお礼

早速の回答ありがとうございました。条件書式を参考に勉強します。たいへんお手数をおかけしました。

お礼日時:2011/04/26 11:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!