1

在 Python 中,我习惯于使用 defaultdict 之类的东西,我可以将许多值附加到给定的键上。在 Excel 中,如果我使用脚本运行时中的 Dictionary 对象,似乎每个键只能添加一项​​。

有没有办法我可以做这样的事情:

  1. 如果字典缺少键,则在 dict[key] 下添加 List(first item)
  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 回答