VBA将集合添加到字典或一个键的多个值

时间:2017-07-17 12:50:57

标签: vba dictionary collections

我有一张主要的大桌子。其中我想要列

  • 名称
  • 价值1
  • 价值2
  • 旗帜1
  • Flag 2

如果值1> 1,则标记1如果值1 = 0.45,则值2,标志2。显然每个都有超过5K +的独特记录。我想知道我是否可以将上面存储为集合并将其添加到字典中,其中名称为键和集合作为项目?

由于

1 个答案:

答案 0 :(得分:0)

在集合中,您可以将任何对象用作项目。因此,您可以将Array,Object或Collection放在那里。在这些中,您可以放置​​多个值。 在这里,您将使用Array作为项目。运行它并在即时窗口中检查结果。

Option Explicit

Public Sub TestMe()

    Dim myCol   As New Collection
    Dim myVar   As Variant        

    myCol.Add Array("A", "B"), "2"
    myCol.Add Array("C", "D"), "3"
    myCol.Add Array("F", "G", "H"), "6"

    For Each myVar In myCol
        Debug.Print myVar(LBound(myVar))
        Debug.Print myVar(UBound(myVar))
        Debug.Print "-------------------"
    Next myVar

End Sub

以下是使用Scripting .Dictionary:

的解决方案
Option Explicit

Public Sub TestMe()

    Dim myCol   As Object
    Dim myVar   As Variant

    Set myCol = CreateObject("Scripting.Dictionary")    

    myCol.Add 2, Array("A", "B")
    myCol.Add 3, Array("C", "D")
    myCol.Add 6, Array("F", "G", "H")

    For Each myVar In myCol.Keys
        Debug.Print myCol(myVar)(LBound(myCol(myVar)))
        Debug.Print myCol(myVar)(UBound(myCol(myVar)))
        Debug.Print "-------------------"
    Next myVar

End Sub

这是即时窗口中的结果:

A
B
-------------------
C
D
-------------------
F
H
-------------------