У меня есть следующий набор кодаVBA создать вложенный словарь
Dim dic As Dictionary
Dim dataArray() As Variant
Dim headerRow(1 To 4) As Variant
Dim mySheet As Worksheet
Dim loopCounter As Long
Dim endRow As Long
Dim endColumn As Long
Dim keyColumn As Long
Dim x As Integer
Dim wsName2 As String
Dim duplicateDictionary As Dictionary
wsName2 = ActiveSheet.Name
Set duplicateDictionary = New Dictionary
Set dic = New Dictionary
With Worksheets(wsName2).Range("A1",Worksheets(wsName2).Range("A1").End(xlDown))
keyColumn = 1
endColumn = 4
endRow = .Range("A1").End(xlDown).Row
dataArray = Range(.Cells(1, 1), .Cells(endRow, endColumn)).Value
End With
For x = 1 To endColumn
headerRow(x) = dataArray(1, x)
Next x
For loopCounter = 2 To endRow
Dim storeKey As Variant
Dim lineArray()
Dim itemNumber As String
Dim itemNumberAndDescription As String
Dim q As Variant
ReDim lineArray(1 To endColumn)
For x = 1 To endColumn
lineArray(x) = dataArray(loopCounter, x)
Next x
storeKey = lineArray(keyColumn)
If Not dic.Exists(storeKey) Then
dic.Add storeKey, New Collection
End If
'create duplicate dictionary if doesn't exist
If Not duplicateDictionary.Exists(storeKey) Then
duplicateDictionary.Add storeKey, New Dictionary
End If
dic(storeKey).Add lineArray
itemNumber = UCase(Trim(Left(lineArray(2), InStr(1, lineArray(2), " -", vbBinaryCompare))))
'add item in the duplicate dictionary based on the storekey
duplicateDictionary(storeKey).Add itemNumber, itemNumber
Next loopCounter
Что я пытаюсь сделать, используя список ниже в качестве примера, чтобы создать вложенный словарь и каждый со своим собственным ключом , Цель этого заключается в том, что у меня есть отчет, который будет проверять словарь, созданный выше для дублирующего элемента, перед добавлением к нему.
Город --- Команда
LA Lakers ----
CHI ---- Быки
NY ---- Никс
DAL ---- Mavericks
BOS ---- Celtics
Я могу создать первый словарь (город), но я могу ' t, похоже, создал второй (вложенный) словарь для названия команды на основе города. Помощь будет отличной. Благодаря!
В чем ваш вопрос? Вы спрашиваете, можно ли создать словарь, значения которого сами по себе являются словарями? В вашем примере - это «BOS» ключ для большого словаря и есть ли какой-то словарь «Celtics», который должен быть значением, которое имеет значение «BOS»? –
Мой вопрос: каким будет код для создания вложенного словаря. Основываясь на моей таблице, «BOS» будет ключом, который будет иметь «celtics» по некоторым другим предметам. Моя конечная цель: у меня есть еще один отчет, который добавит к городу словарь на основе ключа, но добавляет не дублируемое имя. В этом случае он увидит, что «celtics» уже находится в словаре, связанном с «BOS», и не добавит другого. То же самое касается других городов. – Tim