В Python я привык иметь что-то вроде defaultdict, где я могу просто добавить много значений к данному ключу. В Excel кажется, что если я использую объект Dictionary из Runtime Scripting, я могу добавить только один элемент за ключ.Excel словарь с несколькими значениями?
Есть ли способ, что я могу сделать что-то вроде этого:
- Если в словаре отсутствует ключ, добавить список (первый элемент) под Dict [ключ]
- Если в словаре есть ключ, добавьте элемент в уже существующий список под dict [ключ]
Надеюсь, что я достаточно ясен. Может быть, вместо списка я имею в виду массив, не уверен.
Попытка:
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
Звучит довольно просто. У VBA есть объект Collection - http://msdn.microsoft.com/en-us/library/yb7y698k(v=vs.90).aspx - поэтому вы просто пишете пару методов: один возьмет dict, ключ и значение в качестве параметров и воспроизводит логику, которую вы псевдокодировали в своем вопросе; используйте Collection для списка значений. Другой возьмет dict и ключ и вернет значения для ключа в любой форме, какой вам нравится. –
Вам нужно добавить 'Set' для ваших назначений объектов. Тогда он должен работать – RBarryYoung