0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】配列・Dictionary・Collection・Typeの違いと使い分け【備忘録】

Posted at

Excel VBAで複数のデータを扱う際によく使うのが、以下の4つのデータ構造です:

  • 配列(Array)
  • Dictionary
  • Collection
  • Type(ユーザー定義型)

それぞれの特徴と使い分けをまとめました。


📊 比較表

項目 配列(Array) Dictionary Collection Type(ユーザー定義型)
アクセス方法 インデックス(0,1,2…) キー(文字列/数値) インデックス or 名前(任意) ドット記法(.プロパティ名)
データ型の混在 不可(基本同じ型) 可(キーも値も任意の型)
順序 保持される 保証されない 保持される 該当なし(構造体)
要素の追加/削除 ReDimが必要 .Add, .Remove .Add, .Remove 宣言時に固定
キーのユニーク性 なし キーはユニーク 任意(キー省略も可) 項目名はユニーク
用途 整列データ、順序付きリスト キー検索、高速な関連付け シンプルなデータの集合 1件の複数項目データを一つに束ねる

🔹 配列(Array)

Dim fruits(2) As String
fruits(0) = "りんご"
fruits(1) = "バナナ"
fruits(2) = "みかん"
MsgBox fruits(1) ' 結果: バナナ

  • 順序あり
  • 値の集合に適している
  • 要素数を変えるには ReDim が必要

🔹 Dictionary

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "りんご", 100
dict.Add "バナナ", 80
MsgBox dict("バナナ") ' 結果: 80
  • キーと値のペア(ハッシュテーブルのような構造)
  • 高速検索が可能
  • 重複防止や集計処理に向いている
  • Dictionaryは Microsoft Scripting Runtime を参照設定すれば補完が効きます。

🔹 Collection

Dim col As Collection
Set col = New Collection
col.Add "りんご"
col.Add "バナナ"
MsgBox col(1) ' 結果: りんご
  • 順番を保持
  • 操作が簡単で軽量
  • キー付きで追加も可能だが、ユニークでなくても良い
  • Collectionは For Each でループ可能ですが、キーでの直接アクセスはできません(ただし名前付きAddは可能)。

🔹 Type(ユーザー定義型)

Type 商品
    名前 As String
    価格 As Long
    在庫 As Integer
End Type

Sub TestType()
    Dim item As 商品
    item.名前 = "りんご"
    item.価格 = 100
    item.在庫 = 30
End Sub
  • 複数のプロパティを1つにまとめて構造体的に扱える
  • 配列やCollectionと組み合わせて「構造体の配列」も可能
  • Typeはモジュールの先頭で Type を定義する必要があります。

🧩 使い分けまとめ

目的 最適な構造

  • 順番重視、単純なリスト処理  
    • 配列(Array)
    • Collection
  • キー付きで意味のあるデータを扱いたい
    • Dictionary
  • 集計や重複チェック、カテゴリ管理をしたい
    • Dictionary
  • データの入れ物をあとから追加・削除したい
    • Dictionary
    • Collection
  • 複数項目を1レコードとして扱いたい
    • Type(+配列(Array)など)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?