我有两列日期,最多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