2013-03-14 202 views
0

我知道這個話題曾經打開過很多次。按日期對多維數組排序

我看了所有的例子,但我不能讓它工作!

我有3個維度,日期是在第一維度。

一切工作正常指望一個數組,我只是不明白爲什麼..

下面是測試環節:click here

Sub DataSorter(arrArray) 
    Dim row, j, StartingKeyValue, StartingOtherValue, _ 
     NewStartingKey, NewStartingOther, _ 
     swap_pos 

    For row = 0 To UBound(arrArray)-1 
     StartingKeyValue = arrArray(row, 0) 
     StartingOtherValue = arrArray(row, 0) 
     StartingVenue = arrArray(row, 1) 
     StartingVenueOther = arrArray(row, 1) 
     swap_pos = row 
     For j = row + 1 to UBound(arrArray) 
      If DateDiff("s", arrArray(j, 0), NewStartingKey) < 0 Then 
       swap_pos = j 
       NewStartingKey = arrArray(j, 0) 
       NewStartingOther = arrArray(j, 0) 
       NewStartingVenue = arrArray(j, 1) 
       NewStartingVenueOther = arrArray(j, 1) 
       NewStartingCountry = arrArray(j, 2) 
       NewStartingCountryOther = arrArray(j, 2) 
      End If 
     Next  
     If swap_pos <> row Then 
      arrArray (swap_pos, 0) = StartingKeyValue 
      arrArray (swap_pos, 0) = StartingOtherValue    
      arrArray (row, 0) = NewStartingKey 
      arrArray (row, 0) = NewStartingOther  
      arrArray (swap_pos, 1) = StartingVenue 
      arrArray (swap_pos, 1) = StartingVenueOther 
      arrArray (row, 1) = NewStartingVenue 
      arrArray (row, 1) = NewStartingVenueOther 
      arrArray (swap_pos, 2) = StartingCountry 
      arrArray (swap_pos, 2) = StartingCountryOther 
      arrArray (row, 2) = NewStartingCountry 
      arrArray (row, 2) = NewStartingCountryOther 
     End If 
    Next 
End Sub 

回答

0

很奇怪的代碼。試試這個:

Sub DataSorter(arrArray) 
Dim row, i, tmp 
For row = 0 To UBound(arrArray) - 1 
    For j = row + 1 to UBound(arrArray) 
     If DateDiff("s", arrArray(j, 0), arrArray(row, 0)) < 0 Then 
      For i = 0 To 2 
       tmp = arrArray(j, i) 
       arrArray(j, i) = arrArray(row, i) 
       arrArray(row, i) = tmp 
      Next 
     End If 
    Next 
Next 

末次