2012-12-15 33 views
0
爲了檢查

假設我有包含如下日期值的數組ARR1:排序使用VBScript

ARR1(50)=( 「2012年9月3日上午04時57分02秒」,「22日/ 3/2012上午05時57分02秒」, 「2012年9月5日上午08點57分02秒」, 「2011/9/3上午04時57分02秒」)

編輯

Dim CellCount 
Dim Arr(10) 

CellCount=0 
Do Untill arr(CellCount)="" And Ubound(Arr)>9 

    If CStr(arr(CellCount) < arr(CellCount+1)) Then 

    MsgBox(arr(CellCount)&"is good") 

    Else 

    MsgBox(arr(CellCount +1)&"is bad") 
    Exit Do 

    End if 

CellCount=CellCount+1 
Loop 

現在,是否有任何直接的方式,而不使用任何循環技術,以確定Arr1()是否具有升序的日期值?

感謝,

+0

任何更快的比較方法,可以執行任務我問什麼? pleasse sugest me! –

+0

使用'Worksheetfunction.Small/Large/Rank/Max/Min'可以幫助跳過一些循環。 –

+0

我可以在Juri上獲得一些代碼演示嗎?請 –

回答

1

他正在回答你的問題。你問,有沒有辦法找到如果沒有循環排序? 他說不。你的眼睛,我的眼睛可以看到它是否被分類。但是,您如何期望Excel /計算機在不通過集合元素的情況下這樣做?

當數據在數組中時,您需要遍歷其元素。希望很清楚。

所以最好的,我可以說,

  • 如果需要拆分它用逗號和成的變體。但不是必須的,因爲陣列()可以把元件成一維變體
  • 使用移調
  • 使用紙張分組方法/函數排序的範圍作爲一個整體

    傾倒入Range --->所以你知道它現在已經分類。

  • 然後traspose回一個變量數組

一些代碼片段讓你去上這個方向:

Option Explicit 

    Sub omgArraySort() 
     Dim inputArray As Variant 
     Dim outputArray As Variant 
     Dim upperB as Long 

     inputArray = Array("9/3/2012 4:57:02 AM","22/3/2012 5:57:02 AM", _ 
          "9/5/2012 8:57:02 AM","9/3/2011 4:57:02 AM") 
     '-- sorted array 
     outputArray = sortRange(inputArray) 

      upperB = UBound(iArray, 1) '-- for 1D array you may also use UBound(iArray) 
      If (Err.Number <> 0) Then '-- if there's an error, it's erro code is > 0 
      MsgBox "Dates sorted, not empty" 
      End If 
    End Sub 

    '-- dump into sheet and sort in the sheet and dump back into the array 
    Function sortRange(ByVal iArray As Variant) As Variant 
     Dim rngSort as Range 
     Dim i As Long 

     Set rngSort = WorkSheets(1).Range("B2") 
     i = Ubound(iArray,1) 

     With rngSort.Resize(i) 
      .Value = WorksheetFunction.Transpose(iArray) 
      .Sort rngSort, xlDescending, Header:=xlNo 
      sortRange = .Value    
     End With 
    End Function 

在對從片碼的業務可以減緩條款處理大量數據時會降低性能。

請注意,當有人在信譽可靠的SO回答(例如Ekkehard的回答)時,您必須注意一下。他們不會因爲沒有正當理由而這樣說。

+0

當然,我會的,謝謝你給我正確的方向。 –

+0

@TukaiRakshit如果這是工作,請標記 - 所以系統更新,我們都知道你的腳本問題的完整列表中的另一個解決了;) – bonCodigo

+0

'我= Ubound(iArray,1)'和'Ubound outputArray)<> -1'那些語句代表什麼? –

1

不行,因爲你必須檢查高達/元素,直到第一個反例(這可能是最後一個)。

+0

請建議一些更先進的技術。 –

+0

我的編輯代碼可以更改爲某種高級方式嗎? –