目次
1. Dictionaryとは?(基本概念)
- キーと値のペアでデータを管理できるオブジェクト
- キーによる高速検索が可能(配列やCollectionと大きく異なる点)
- Dictionaryを使うなら知っておきたい!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
コメント