我想对数组进行排序,因为我很懒,我想使用EXCEL/VBA的板载排序功能。根据MS Office官方支持的工作表功能。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 (Version 2204 Build 16.0.15128.20128) 32位
您的问题与第四个函数参数有关…
它是Optional
,但它使排序按行如果不使用(False
)。因为你尝试对1D数组进行排序没有任何行,它不排序任何东西。
你应该使用:
myArray2 = WorksheetFunction.Sort(myArray1, 1, 1, True)
这样的数组只有列…
注意:要过滤的数组必须声明为As Variant
,以同样的方式,当它将从范围加载时需要声明。上述函数不接受声明为As Double
,As Long
…的数组