使用 VBA 的板载排序功能



我想对数组进行排序,因为我很懒,我想使用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…的数组

相关内容

  • 没有找到相关文章

最新更新