我有一个包含每天多个测量值的数据集。我已经将数据放在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
我查看了一些用户定义的函数来获取唯一值,但它们是根据数值而非日期类型进行操作。
非常感谢任何帮助。谢谢!
答案 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无关,它只是我个人采取的逻辑方法。