【问题标题】:VBA adding collection to a dictionary or multiple values for one keyVBA将集合添加到字典或一个键的多个值
【发布时间】:2017-07-17 12:50:57
【问题描述】:

我有一张主要的大桌子。其中我要专栏

  • 姓名
  • 值 1
  • 值 2
  • 标志 1
  • 标志 2

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

谢谢

【问题讨论】:

    标签: vba dictionary collections


    【解决方案1】:

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

    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
    

    这是带有脚本的解决方案。字典:

    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
    -------------------
    

    【讨论】:

    • 我想将它与字典结合的原因是因为我会有重复的行,例如您的例如多个 2s所以希望使用字典的存在特征
    • 可以把Collection对象改成字典对象,逻辑大同小异。 @VarunYadav
    • 使用字典时,注意如果要编辑数组,需要将数组拉出字典:stackoverflow.com/questions/26390638/…
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多