目次
1. Dictionaryとは?(基本概念)
- キーと値のペアでデータを管理できるオブジェクト
- キーによる高速検索が可能(配列やCollectionと大きく異なる点)
- Scripting Runtimeライブラリの
Microsoft Scripting Runtime
に含まれる
2. Dictionaryの基本操作
- 生成:
Set dict = CreateObject("Scripting.Dictionary")
- 追加:
dict.Add "Key1", "Value1"
- 取得:
value = dict("Key1")
- 存在確認:
If dict.Exists("Key1") Then ...
- 削除:
dict.Remove "Key1"
- 全削除:
dict.RemoveAll
3. 繰り返し処理(ループ)
- キーの一覧:
For Each k In dict.Keys
- 値の一覧:
For Each v In dict.Items
- キーと値の両方を処理:
For Each k In dict.Keys: v = dict(k): ... : Next
4. 実用例(典型パターン)
- Excel表の特定列で重複チェック(出現済みか判定)
- ID → 名前など、1対1対応の高速参照マッピング
- 集計(例:部署ごとの人数カウント)にも使える
5. Dictionaryの便利機能
- キーは文字列以外にも使える(数値・日付など)
CompareMode
プロパティで大文字小文字を無視できる
(dict.CompareMode = TextCompare
で"A"
="a"
扱いに)
6. Dictionaryと他構造の使い分け
特性 | Collection | Dictionary |
---|---|---|
キーアクセス | △(制限あり) | ◎(自由) |
重複キー | ×(不可) | ×(不可) |
順序保持 | △(追加順) | ×(保証なし) |
削除/更新 | △(再追加) | ◎ |
検索速度 | △ | ◎(高速) |
7. 落とし穴と対策
- 重複キー追加でエラー:
If Not dict.Exists(key) Then dict.Add key, value
- キーの型混在(文字列 vs 数値)に注意(例:
"1"
と1
は別扱い) - シートに出力する場合は
.Keys
や.Items
を配列に変換する必要あり
8. 応用パターン
- Dictionary内に別のDictionary(ネスト構造)で多次元マッピング
- 値にクラスオブジェクトを格納して、OOPと連携
- 配列 → Dictionary → クラス構造に変換してデータ処理効率UP
コメント