1

Python では、特定のキーに多くの値を追加できる defaultdict のようなものを使用することに慣れています。Excel では、Scripting Runtime の Dictionary オブジェクトを使用すると、キーごとに 1 つの項目しか追加できないようです。

私はこのようなことを行うことができる方法はありますか:

  1. 辞書にキーがない場合は、dict[key] の下に List(最初の項目) を追加します。
  2. 辞書にキーがある場合は、dict[key] の下の既存のリストにアイテムを追加します

私が十分に明確であることを願っています。リストの代わりに配列を意味するかもしれませんが、わかりません。

試み:

        Dim collect As New collection

        If Not dict.Exists(key) Then
            dict.Add key, collect
        End If

        collect = dict.Item(key)
        collect.Add (val)

        dict.Item(key) = collect
4

1 に答える 1

1

Setオブジェクトに割り当てるために VBA で必要なキーワードがありません。ただし、とにかく、はるかにコンパクトな形式でそれらを回避できます。

If Not dict.Exists(Key) Then dict.Add Key, New Collection

dict.Item(Key).Add Val

古い形式を維持したい場合は、次のようにします。

    Dim collect As New collection

    If Not dict.Exists(key) Then
        dict.Add key, collect
    End If

    Set collect = dict.Item(key)
    collect.Add (val)

    Set dict.Item(key) = collect

しかし、上記のよりコンパクトな形式も問題なく動作します。

于 2013-09-05T19:33:42.260 に答える