指定セル範囲を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
コメント