Dictionaryオブジェクトの使い方

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と他構造の使い分け

特性CollectionDictionary
キーアクセス△(制限あり)◎(自由)
重複キー×(不可)×(不可)
順序保持△(追加順)×(保証なし)
削除/更新△(再追加)
検索速度◎(高速)

7. 落とし穴と対策

  • 重複キー追加でエラー:If Not dict.Exists(key) Then dict.Add key, value
  • キーの型混在(文字列 vs 数値)に注意(例:"1" と 1 は別扱い)
  • シートに出力する場合は .Keys や .Items を配列に変換する必要あり

8. 応用パターン

  • Dictionary内に別のDictionary(ネスト構造)で多次元マッピング
  • 値にクラスオブジェクトを格納して、OOPと連携
  • 配列 → Dictionary → クラス構造に変換してデータ処理効率UP

コメント

タイトルとURLをコピーしました