我有以下一组代码
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
我正在尝试使用下面的列表作为示例,创建一个嵌套字典,每个字典都有自己的密钥.这样做的目的是因为我有一个报告,它会在添加之前检查上面为重复项创建的字典.
市---团队
洛杉矶----湖人队
CHI ----公牛队
纽约尼克斯队
DAL ----小牛队
BOS ----凯尔特人队
我能够创建第一个字典(城市),但我似乎无法根据城市为团队名称创建第二个(嵌套)字典.帮助会很棒.谢谢!
首先创建 - 然后将新字典添加到外部字典.以下子应该给你一些想法:
Sub Test()
    Dim DOD As New Dictionary
    Dim InnerDict As Dictionary
    'create one inner dictionary
    Set InnerDict = New Dictionary
    InnerDict.Add "A", 1
    InnerDict.Add "B", 2
    'add it to the dictionary of dictionaries
    DOD.Add "dict1", InnerDict
    'create another inner dictionary
    Set InnerDict = New Dictionary
    InnerDict.Add "A", 3
    InnerDict.Add "B", 4
    InnerDict.Add "C", 5
    'add it to DOD
    DOD.Add "dict2", InnerDict
    'access like:
    Debug.Print DOD("dict1")("A") 'prints 1
    Debug.Print DOD("dict2")("A") 'prints 3
    'can add new keys to inner dicts:
    DOD("dict1").Add "C", 10
    Debug.Print DOD("dict1")("C") 'prints 10
End Sub