在excel vba数组中find唯一的date

我有一个数据集,包含每天的多个度量。 我已经把数据放在VBA数组中了。 现在,我想创build一个具有独特日子的arrays。

_Here is my dataset:_ 12/07/2010 3.5 12/07/2010 2.1 12/07/2010 2.2 12/08/2010 5.2 12/08/2010 3.2 12/09/2010 4.7 

这是我想要回报的:

 12/07/2010 12/08/2010 12/09/2010 

我已经查看了一些用户定义的唯一值的函数,但是它们使用数值而不是datetypes。

任何帮助是极大的赞赏。 谢谢!

datetypes是一个数字…

一个简单的方法是使用一个集合:

 Sub Uniques() Dim oColl As New Collection Dim vArr As Variant Dim vItem As Variant Dim j As Long vArr = Range("A1:B6") On Error Resume Next For j = LBound(vArr) To UBound(vArr) oColl.Add vArr(j, 1), CStr(vArr(j, 1)) Next j On Error GoTo 0 For Each vItem In oColl Debug.Print vItem Next vItem End Sub 

为了过滤的目的,我会使用一个集合。 我创build了一个代表你自己数组的模拟vArray。

集合不会接受相同的密钥两次,因此会过滤掉dup值。 由于“On Error resume next”,我强烈build议您将这段代码分开放在一个特定的function中。

 Sub test() Dim vItem As Variant Dim vArray(5) As Variant vArray(0) = CDate("12/07/2010") vArray(1) = CDate("12/07/2010") vArray(2) = CDate("12/07/2010") vArray(3) = CDate("12/08/2010") vArray(4) = CDate("12/08/2010") vArray(5) = CDate("12/09/2010") Dim colDates As Collection Set colDates = New Collection On Error Resume Next For Each vItem In vArray colDates.Add vItem, CStr(vItem) Next vItem End Sub 

没有简单的方法来做这个functin。

我能想到的最简单的方法是使用Filter函数

Filter将返回一个包含与filter匹配的数组值的数组。

所以逻辑上:

 arTargetArray as Array For each Item in your_array value = Filter(arTargetArray, Item) if value null add item to arTargetArray. end if next each 

希望这有一点帮助。

我知道这个语法与vba没有任何关系,只是我个人采取的逻辑方法。