さーて同じようなお話3回目です。
ちょっとこの例でやるには不適当かもですが、
こういう使い方があるので一緒に覚えましょうのコーナー。
Sub オブジェクトを入れておく() Dim tmp Set tmp = Range("B2").CurrentRegion Dim dic As Scripting.dictionary Set dic = New dictionary Dim r As Range For Each r In tmp Dim col As Collection Set col = New Collection If dic.Exists(r.Text) = False Then col.Add r dic.Add r.Text, col Else dic(r.Text).Add r End If Next '----------------------ここからはデータを参照して色塗り Dim d Dim k For Each d In dic Debug.Print d, dic(d).Count If dic(d).Count = 2 Then For k = 1 To dic(d).Count dic(d)(k).Interior.Color = vbBlue Next ElseIf dic(d).Count = 3 Then For k = 1 To dic(d).Count dic(d)(k).Interior.Color = vbRed Next End If Next End Sub
自分でいうのもなんですが、ややこしい。。。
とりあえず、最初のRange取得はSETでオブジェクト入れてます。
んで、重複チェックにdictionary使うのはおんなじ。
違うのはコレクションに1回追加して、コレクションごとを突っ込むことです。
こうしておくと、コレクション側の数を数えることでデータ数が参照できますし、
当たり前ですが、オブジェクト入ってるのでRange扱いで
いろいろできるのがポイント。
前回はfor i多めでしたが、For eachばっかりなのも注目かもしれず。
あ! 色塗りの初期化わすれました←