如何在vba中对数组进行排序?
要在 VBA 中对数组进行排序,您需要编写一段代码,在其中可以将数组的第一个元素与下一个元素进行匹配,如果第一个元素应该在前面,则交换它们。为此,您需要一个FOR(For Next)循环和UCASE 函数。
在本教程中,我们将看到对数组元素进行排序的两种方法(AZ 和 ZA)。
对数组进行排序 (AZ)
在下面的代码中,你有一个包含五个元素的数组,这些元素的值范围从E到A,现在我们需要按AZ顺序排序。
对数组进行排序的步骤
- 首先,您需要使用数组的上限和下限编写一个带有 For Next 的嵌套循环。
- 之后,在这个循环中,您需要使用VBA IF语句来比较两个元素。
- 从那里开始,如果第一个元素应该出现在下一个元素之前,则需要通过将它们的值保存在变量中来交换它们。
- 最后,使用“Next”关键字完成循环。
Option Base 1 Sub vba_sort_array_a_to_z() Dim myArray() As Variant ReDim myArray(5) Dim i As Integer Dim j As Integer Dim Temp As String myArray(1) = "E" myArray(2) = "D" myArray(3) = "C" myArray(4) = "B" myArray(5) = "A" 'sorting array from A to Z For i = LBound(myArray) To UBound(myArray) For j = i + 1 To UBound(myArray) If UCase(myArray(i)) > UCase(myArray(j)) Then Temp = myArray(j) myArray(j) = myArray(i) myArray(i) = Temp End If Next j Next i Debug.Print myArray(1) Debug.Print myArray(2) Debug.Print myArray(3) Debug.Print myArray(4) Debug.Print myArray(5) End Sub
确保激活“立即”窗口以查看结果。
对数组进行排序 (ZA)
同理,可以按ZA排序。在前面的方法中,我们将序列中的第一个元素与下一个元素进行比较,但在这段代码中,您需要执行相反的操作。因此,如果第二个元素(按顺序排列的下一个)大于第一个元素,代码将交换它们。
Option Base 1 Sub vba_sort_array_z_to_a() Dim myArray() As Variant ReDim myArray(5) Dim i As Integer Dim j As Integer Dim Temp As String myArray(1) = "A" myArray(2) = "B" myArray(3) = "C" myArray(4) = "D" myArray(5) = "E" 'sorting array from A to Z For i = LBound(myArray) To UBound(myArray) For j = i + 1 To UBound(myArray) If UCase(myArray(i)) < UCase(myArray(j)) Then Temp = myArray(j) myArray(j) = myArray(i) myArray(i) = Temp End If Next j Next i Debug.Print myArray(1) Debug.Print myArray(2) Debug.Print myArray(3) Debug.Print myArray(4) Debug.Print myArray(5) End Sub