我想對陣列進行排序,因為我很懶,所以想使用 EXCEL/VBA 的板載排序功能。根據官方 MS Office 支持 worksheetfunctions.sort 也應該使用陣列,請參見此處。這是我的第一次嘗試。
Sub sorting()
Dim myArray1() As Double
Dim myArray2() As Double
ReDim myArray1(1 To 5)
myArray1(1) = 0.221157
myArray1(2) = -0.147981
myArray1(3) = -2.07119
myArray1(4) = 4.434685
myArray1(5) = -2.706056
myArray2 = WorksheetFunction.Sort(myArray1, 1, 1)
End Sub
這會產生型別不匹配錯誤,因此我已將代碼調整為
Sub sorting()
Dim myArray1() As Variant
Dim myArray2() As Variant
ReDim myArray1(1 To 5)
myArray1(1) = 0.221157
myArray1(2) = -0.147981
myArray1(3) = -2.07119
myArray1(4) = 4.434685
myArray1(5) = -2.706056
myArray2 = WorksheetFunction.Sort(myArray1, 1, 1)
End Sub
代碼運行沒有任何錯誤,但是 myArray2 沒有排序,它只是 myArray1 的一個副本。
我在用:
Microsoft? Excel? for Microsoft 365 MSO(版本 2204 Build 16.0.15128.20128)32 位
uj5u.com熱心網友回復:
您的問題與第四個函式引數有關...
它是,但如果不使用() ,它會按行Optional排序。由于您嘗試對沒有任何行的一維陣列進行排序,因此它不會對任何內容進行排序。False
你應該使用:
myArray2 = WorksheetFunction.Sort(myArray1, 1, 1, True)
這樣的陣列只有列......
注意:必須宣告要過濾的陣列,As Variant就像從范圍加載它時需要宣告的一樣。上述函式不接受這樣的陣列宣告As Double,As Long...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474645.html
上一篇:用于排序和選擇的Java應用程式
