¿cómo ordenar una matriz en vba?

Para ordenar una matriz en VBA, necesita escribir un código en el que pueda hacer coincidir el primer elemento de la matriz con el siguiente e intercambiarlos si el primero debe aparecer antes. Necesita un bucle FOR (For Next) para esto y la función UCASE .

En este tutorial veremos las dos formas (AZ y ZA) de ordenar los elementos de una matriz.

Ordenar una matriz (AZ)

En el código siguiente, tiene una matriz con cinco elementos, y estos elementos tienen valores que van de E a A, y ahora debemos ordenarlos en orden AZ.

ordenar-una-matriz-1

Pasos para ordenar una matriz

  1. Primero, necesitas escribir un bucle anidado con For Next usando los límites superior e inferior de la matriz.
  2. Después de eso, en este bucle, debe usar la declaración IF de VBA para comparar los dos elementos.
  3. A partir de ahí, si el primer elemento debe aparecer antes que el siguiente, deberá intercambiarlos guardando sus valores en variables.
  4. Al final, utilice la palabra clave «Siguiente» para completar el ciclo.
 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

Asegúrese de activar la ventana Inmediato para ver los resultados allí.

Ordenar una matriz (ZA)

De la misma forma, puedes ordenar por ZA. En el método anterior, comparamos el primer elemento con el siguiente elemento de la secuencia, pero en este código debes hacer lo contrario. Entonces, si el segundo elemento (el siguiente en orden) es mayor que el primero, el código los intercambiará.

 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

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *