在Excel VBA中过滤2D阵列并从中构建第二个1D阵列

时间:2017-03-16 15:41:33

标签: arrays excel vba excel-vba class

我有两列日期,最多30k行。我想过滤第二列中的一个日期,并返回第一列中的所有唯一日期。

我可以在Access中构建它,但我不会将Access用于其他任何事情,因此使用它似乎有些过分。部分是因为我很好奇我是否可以在Excel中完成。 我不想使用循环,因为它在运行时间方面会很昂贵,我只是在学习数组和类模块,所以这是一个很好的例子。

SOF上有一些背景知识,但对我来说还不够详细 - 我对类模块不熟悉 Filtering 2D Arrays in Excel VBA

非常感谢任何帮助或指示。

Sub CreateUniqueTradeDatesForAsOfDate_test()
Dim InternalArray As Variant
Dim Rg_Internal As Range
Dim arr As New Collection
Dim myRow As Long
Dim myCol As Long

Set d = CreateObject("Scripting.Dictionary")
'set the range
Set Rg_Internal = Worksheets("Bloomberg").Range("G:H")

'Set the array to the range
InternalArray = Rg_Internal.Value
'Transpose the array
InternalArray = Application.Transpose(InternalArray)

   'Create the unique
    With CreateObject("scripting.dictionary")
    For Each it In InternalArray
        d = .Item(it)
    Next
    d = .Keys ' the array .keys contains all unique keys
End With

'print to the immediate window but all unique values of the array 
' not just the unique values from the first column based on 
'the criteria from the second column
     For Each i In d 'To UBound(10, 1)
       Debug.Print i; RowNos
    Next i

 End Sub

0 个答案:

没有答案