2017-07-17 15 views
0

私は大きな大きなテーブルを持っています。そのうち私が欲しいの列辞書にコレクションを追加するか、1つのキーに複数の値を追加するVBA

  • 名前
  • 値1
  • 値2
  • 旗1
  • 旗2

フラグ1の値1>値2、旗2の場合であれば値1 = 0.45。明らかに、それぞれの5K以上の固有のレコードがあります。私はコレクションとして上記のものを保存することができ、アイテムとしてキーとコレクションとしての名前を持つ辞書に追加できるのだろうかと思いましたか?

ありがとうございました

答えて

0

コレクションには、任意のオブジェクトをアイテムとして使用できます。したがって、Array、ObjectまたはCollectionをそこに置くことができます。これらの中で、複数の値を入力することができます。 ここでは、配列をItemとして扱います。それを実行し、直接のウィンドウで結果を確認してください。ここで

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 

はスクリプト.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 
------------------- 
+0

辞書は私が重複した行を持つためですあなたの複数の2秒だから、辞書の機能が存在することを期待していた –

+0

コレクションオブジェクトを辞書オブジェクトに変更することができますが、ロジックは全く同じです。 @VarunYadav – Vityata

+0

辞書を使用する場合は、辞書を編集する必要がある場合は、配列を辞書から抜き出す必要があります。https://stackoverflow.com/questions/26390638/vba-dictionary-with-dynamic-arrays/26390929# 26390929 –

関連する問題