Я нашел старый метод http://www.techbookreport.com/tutorials/vba_dictionary2.html для выполнения словаря внутри словаря в VBA, но в модификации Excel 2013 в библиотеке Scripting, я не могу сделать работу вложенности одинаково.Словарь в словаре
Или есть?
Sub dict()
Dim ws1 As Worksheet: Set ws1 = Sheets("BM")
Dim family_dict As New Scripting.Dictionary
Dim bm_dict As New Scripting.Dictionary
Dim family As String, bm As String
Dim i
Dim ws1_range As Range
Dim rng1 As Range
With ws1
Set ws1_range = .Range(Cells(2, 1).Address & ":" & Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).Address)
End With
For Each rng1 In ws1_range
family = ws1.Cells(rng1.Row, 1)
bm = ws1.Cells(rng1.Row, 2)
If family_dict.Exists(family) Then
Set bm_dict = family_dict(family)("scripting.dictionary")
If bm_dict.Exists(bm) Then
Else
bm_dict.Add bm, Empty
End If
Else
family_dict.Add family, Empty
Set bm_dict = family_dict(family)("scripting.dictionary")
If bm_dict.Exists(bm) Then
Else
bm_dict.Add bm, Empty
End If
End If
For Each i In family_dict.Keys: Debug.Print i: Next
For Each i In bm_dict.Keys: Debug.Print i: Next
For Each i In bm_dict.Items: Debug.Print i: Next
Debug.Print bm_dict.Count
Next
End Sub
УВА и VBScript старые, стабильные TECHNOLOGI эс. Я был бы удивлен, если бы в семантике словарей произошли какие-либо изменения в 2013 году. –
Я видел пару этих предполагаемых словарей подпрограмм словарей, и меня обычно поражают, почему один словарь со связанными значениями как Item (например, как поток Atom) не используется. \ – Jeeped
Вы не можете использовать этот синтаксис: 'Установить bm_dict = family_dict (family) (" scripting.dictionary ")'. Вы должны использовать тот же метод, что и в вашей ссылке: «Установите myDictionary = Новый словарь», затем добавьте его как элемент родительского словаря. Я также сделал рабочий пример в [this] (http://stackoverflow.com/a/32362499/4914662), вы можете настроить его для своих данных. –