Dictionary 基本
Excel VBAで「キーと値をセットで管理したい」「高速に検索したい」ときに便利なのが Dictionary(辞書オブジェクト) です。初心者でも理解しやすいように、コード例とテンプレートをかみ砕いて説明します。
基本の考え方
- Dictionaryとは?
キー(Key)と値(Item)をペアで保存する入れ物。- キーはユニーク(重複不可)。
- 値は自由に設定できる(文字列・数値・配列など)。
- メリット:
- 高速検索(
Existsで一瞬判定)。 - 重複除去(ユニーク化)。
- 集計やマッピングに便利。
- 高速検索(
テンプレ1:Dictionaryの基本操作
Sub Dict_Basic()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' 値を追加
dict.Add "A001", "りんご"
dict.Add "A002", "みかん"
dict.Add "A003", "バナナ"
' 値を取得
MsgBox dict("A002") ' → "みかん"
' キーが存在するか確認
If dict.Exists("A003") Then
MsgBox "A003は存在します"
End If
' キー一覧をループ
Dim k As Variant
For Each k In dict.Keys
Debug.Print k, dict(k)
Next k
End Sub
VB- ポイント:
Addで追加。dict("キー")で値を取得。Existsで存在確認。Keysでキー一覧を取得。
テンプレ2:重複除去(ユニーク化)
Sub Dict_Unique()
Dim fruits As Variant
fruits = Array("りんご", "みかん", "バナナ", "りんご", "ぶどう")
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim f As Variant
For Each f In fruits
dict(f) = True ' キーだけ使う
Next f
' ユニーク一覧を出力
Dim k As Variant
For Each k In dict.Keys
Debug.Print k
Next k
End Sub
VB- 結果:
りんご みかん バナナ ぶどう
テンプレ3:集計(商品ごとの数量合計)
Sub Dict_Sum()
Dim data As Variant
data = Array( _
Array("りんご", 10), _
Array("みかん", 5), _
Array("りんご", 8), _
Array("バナナ", 12))
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim i As Long, key As String
For i = LBound(data) To UBound(data)
key = data(i)(0)
If dict.Exists(key) Then
dict(key) = dict(key) + data(i)(1)
Else
dict(key) = data(i)(1)
End If
Next i
' 結果出力
Dim k As Variant
For Each k In dict.Keys
Debug.Print k, dict(k)
Next k
End Sub
VB- 結果:
りんご 18 みかん 5 バナナ 12
テンプレ4:コード検索(マッピング)
Sub Dict_Search()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
dict("C001") = "東京"
dict("C002") = "大阪"
dict("C003") = "名古屋"
Dim code As String: code = "C002"
If dict.Exists(code) Then
MsgBox "コード " & code & " の都市は " & dict(code)
Else
MsgBox "該当なし"
End If
End Sub
VB- ポイント: コードをキーにして都市名を高速検索。
例題で練習
'例1:基本操作
Sub Example1()
Dict_Basic
End Sub
'例2:重複除去
Sub Example2()
Dict_Unique
End Sub
'例3:商品ごとの数量合計
Sub Example3()
Dict_Sum
End Sub
'例4:コード検索
Sub Example4()
Dict_Search
End Sub
VB初心者向けポイント
- Dictionaryは「キーと値のペア」 → ExcelのVLOOKUPのような使い方ができる。
- Existsで高速検索 → 数万件でも一瞬。
- ユニーク化や集計に最適 → 重複除去や合計計算が簡単。
- Keys/Itemsで一覧取得 → ループで処理できる。
- 実務で便利 → コード→名称変換、商品ごとの集計、重複チェックなど。
👉 この「Dictionary基本テンプレ」をベースにすれば、初心者でも 検索・集計・ユニーク化 を高速に実務へ応用できます。
