2012-06-04 51 views
0

我有一个二维数组。一维是日期,其他维度是名称。按日期对二维数组排序

而我想按最新日期排序这些数组值。

我看了几个例子,我想出了这个。

但日期排序不正确。

DataMax = uBound(sDateArray)-1 

For i = 0 to DataMax 
    For j = i + 1 to DataMax 
     If DateDiff("s", DataArray(j, 0), DataArray(i, 0)) > 0 Then 
      TemporalVariable = sDateArray(i, 0) 
      sDateArray(i, 0)  = sDateArray(j, 0) 
      sDateArray(j, 0)  = TemporalVariable 
     End If 
    Next 
Next 


    For i=0 to DataMax 
     Response.write (sDateArray(i) & "<BR>") 
    next 

回答

0

我实际上找到了一个在线例子。 它不是一个函数,它的一个子,但它工作正常。 总是欢迎其他建议。

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) 
     NewStartingKey = arrArray(row, 0) 
     NewStartingOther = arrArray(row, 0) 
     swap_pos = row 
     For j = row + 1 to UBound(arrArray) 
      If arrArray(j, 0) > NewStartingKey Then 
       swap_pos = j 
       NewStartingKey = arrArray(j, 0) 
       NewStartingOther = arrArray(j, 0) 
      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  
     End If 
    Next 
End Sub 
0

这篇文章显示在传统的ASP一个排序:http://www.4guysfromrolla.com/webtech/062701-1.shtml

在总结

,这是分开部(只需更换您的日期比较字符串比较):

Sub SortArray(aTempArray) 
    Dim iTemp, jTemp, strTemp 

    For iTemp = 0 To UBound(aTempArray) 
    For jTemp = 0 To iTemp 

     If strComp(aTempArray(jTemp), aTempArray(iTemp)) > 0 Then 
     'Swap the array positions 
     strTemp = aTempArray(jTemp) 
     aTempArray(jTemp) = aTempArray(iTemp) 
     aTempArray(iTemp) = strTemp 
     End If 

    Next 
    Next 
End Sub 
+0

这与我在这里的内容非常相似。 – Efe

+0

是的,但如果你注意到,循环开始和结束在不同的索引。尝试这些更改并查看排序现在是否有效 – Rodolfo