|
こんな書き方もあります。dictionaryを利用する方法です。
Sub test()
Dim sh As Worksheet, c As Range
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
For Each sh In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For Each c In sh.Range("A1:G100")
dic(c.Value) = dic(c.Value) + 1
Next
Next
For Each sh In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For Each c In sh.Range("A1:G100")
If dic(c.Value) > 1 Then c.Interior.ColorIndex = 40
Next
Next
End Sub
ちなみに、CountIfによる方法も十分速い(0.6秒台)ですが、
上記は0.1秒台でした。
データ量にも依存するので、一概に言えないかもしれませんが、
一応参考まで。
|
|