我怎样才能sortingdate在VBA数组?

嗨,我是编程新手,刚开始学习Excel的VBA。 我有一个关于数组sorting的查询。 如何sorting包含date的数组? 例如,如果我有一个包含date(“23-jul-13”,“11-jan-10”,“1-may-09”,“3-feb-04”)的数组,我该如何sorting这个数组。 我已经search了所有的互联网上的答案,但只能find代码sorting数字。 这两天我一直在绞尽脑汁,但似乎无法得到它。

谢谢

我有下面的代码所需的date从选定的列,但我遇到一个错误,每当我运行它。 我一直在试图找出2天内有什么问题。 我之前没有提到这个代码,但是它不必要地增加了混淆。 子GetUniqueAndCount工作正常,但它是sorting子是这个问题,因为它不接受传递给它作为参数的数组。

Sub GetUniqueAndCount() Dim d As Object, c As Range, k, tmp As String Set d = CreateObject("scripting.dictionary") 'I will select the column of dates For Each c In Selection tmp = Trim(c.Value) If Len(tmp) > 0 Then If Year(DateValue(Format(tmp, "dd-mmm-yy"))) = 2013 Then d(tmp) = d(tmp) + 1 End If End If Next c i = 0 ReDim ThisArray(UBound(d.keys)) As Date For Each k In d.keys ThisArray(i) = DateValue(Format(k, "dd-mmm-yy")) i = i + 1 Next k Sort (ThisArray) End Sub Sub Sort(arr() As Date) Dim Temp As Date Dim i As Long Dim j As Long For j = 2 To UBound(arr) Temp = arr(j) For i = j - 1 To 1 Step -1 If (arr(i) <= Temp) Then GoTo 10 arr(i + 1) = arr(i) Next i i = 0 10 arr(i + 1) = Temp Next j End Sub 

你的Sort(arr() As Date)工作正常。 问题是这条线

 Sort (ThisArray) 

将其更改为

 Sort ThisArray 

另外,既然你在ThisArray存储Dates ,我希望你已经把它声明为Date

 Sub Sample() Dim ThisArray(1 To 5) As Date ThisArray(1) = #12/13/2013# ThisArray(2) = #12/13/2012# ThisArray(3) = #12/13/2015# ThisArray(4) = #12/13/2014# ThisArray(5) = #12/13/2016# SortAr ThisArray For i = 1 To 5 Debug.Print ThisArray(i) Next i End Sub Sub SortAr(arr() As Date) Dim Temp As Date Dim i As Long, j As Long For j = 2 To UBound(arr) Temp = arr(j) For i = j - 1 To 1 Step -1 If (arr(i) <= Temp) Then GoTo 10 arr(i + 1) = arr(i) Next i i = 0 10: arr(i + 1) = Temp Next j End Sub 

OUTPUT

 13/12/2012 13/12/2013 13/12/2014 13/12/2015 13/12/2016