Bagaimana cara mengurutkan array di vba?

Untuk mengurutkan array di VBA, Anda perlu menulis kode di mana Anda dapat mencocokkan elemen pertama array dengan elemen berikutnya dan menukarnya jika elemen pertama ada sebelumnya. Anda memerlukan loop FOR (For Next) untuk ini dan fungsi UCASE .

Dalam tutorial ini, kita akan melihat dua cara (AZ dan ZA) dalam mengurutkan elemen array.

Mengurutkan array (AZ)

Pada kode di bawah ini, Anda memiliki array dengan lima elemen, dan elemen ini memiliki nilai mulai dari E hingga A, dan sekarang kita perlu mengurutkan dalam urutan AZ.

sortir-an-array-1

Langkah-langkah untuk mengurutkan array

  1. Pertama, Anda perlu menulis loop bersarang dengan For Next menggunakan batas atas dan bawah array.
  2. Setelah itu, dalam loop ini, Anda perlu menggunakan pernyataan VBA IF untuk membandingkan kedua elemen.
  3. Dari sana, jika elemen pertama harus berada sebelum elemen berikutnya, Anda perlu menukarnya dengan menyimpan nilainya dalam variabel.
  4. Pada akhirnya, gunakan kata kunci “Berikutnya” untuk menyelesaikan perulangan.
 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

Pastikan untuk mengaktifkan jendela Immediate untuk melihat hasilnya di sana.

Urutkan array (ZA)

Dengan cara yang sama, Anda dapat mengurutkan berdasarkan ZA. Pada metode sebelumnya, kita membandingkan elemen pertama dengan elemen berikutnya dalam urutan, tetapi dalam kode ini Anda perlu melakukan yang sebaliknya. Jadi jika elemen kedua (urutan berikutnya) lebih besar dari elemen pertama, kode akan menukarnya.

 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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *