在excel vba数组中查找唯一日期

时间:2011-02-14 17:36:53

标签: excel vba date excel-vba unique

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

_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

我查看了一些用户定义的函数来获取唯一值,但它们是根据数值而非日期类型进行操作。

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:2)

日期类型是一个数字......

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

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

答案 1 :(得分:2)

出于过滤目的,我会使用Collection。我创建了一个模拟vArray,它代表你自己的数组。

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

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

答案 2 :(得分:1)

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

我能想到的最简单的方法是使用过滤功能

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无关,它只是我个人采取的逻辑方法。