指定セル範囲をDictionaryに格納して重複削除したい
配列の場合、気にせずセル範囲を格納できますが、
Dictionaryの場合は重複チェックをしないといけない為、少し手順を考えないといけません。
Dictionaryの場合は重複チェックをしないといけない為、少し手順を考えないといけません。
■やりたいこと
・特定セル範囲(一次元/二次元)の表をDictionaryに格納したい。
・Dictionaryに格納する事で重複を削除したい。
・単純に重複を削除するのみである=Keyは使用する。Itemは使用しない。
・特定セル範囲(一次元/二次元)の表をDictionaryに格納したい。
・Dictionaryに格納する事で重複を削除したい。
・単純に重複を削除するのみである=Keyは使用する。Itemは使用しない。
指定セル範囲をDictionaryに格納するサンプルコード
'参照設定 Microsoft Scripting Runtime
Public Function RangeToDictionary(rng As Range) As dictionary
Dim dic As dictionary
Set dic = New dictionary
Dim rCell As Range
For Each rCell In rng
If rCell <> "" Then
If dic.Exists(rCell.Value) = False Then
dic.Add rCell.Value, rCell.Value
End If
End If
Next
If dic.Count <> 0 Then
Set RangeToDictionary = dic
End If
End Function
実際の使い方
'■任意のセル範囲をDictionaryに格納する(結果をdictionaryで受け取る)
Public Sub sample()
Dim arr As dictionary
Range("A1:E5").Value = "a"
Set arr = RangeToDictionary(Range("A1:E5"))
Debug.Print arr.Count '1(セル範囲には値は「a」のみなので1つしかdicに入らない)
Debug.Print arr.items(0) 'a
'Set arr = RangeToDictionary(Range("A1:E5"))の代わりに
'Set arr = RangeToDictionary(Range("A1:A5"))や
'Set arr = RangeToDictionary(Range("A1:E1"))でも結果は同一です。
End Sub



コメント