Como Ordenar una matriz alfabéticamente con VBA

Índice
  1. Configurando el ejemplo
  2. Ordenar la matriz AZ
  3. Ordenar la matriz ZA

En algún momento de su vida de VBA, será necesario mostrar o reordenar una matriz/lista alfabéticamente (o alfabéticamente al revés). Desafortunadamente, VBA no tiene una función para ordenar matrices automáticamente, pero con un poco de codificación podemos crear una función reutilizable que lograría algo similar.

Configurando el ejemplo

Este primer código VBA sirve para preparar el escenario. Crea una matriz, llama a la función para ordenar la matriz y luego genera la matriz ordenada. Sólo necesitas este primer fragmento de código si lo estás siguiendo como ejemplo.

Sub RunTheSortMacro()Dim i As LongDim myArray As Variant'Establezca la matrizmyArray = Array("p", "A", "G", 3, "l", "6", 10, "K", 7)'myArray variable configurada como el resultado de la función SortArrayAtoZ myArray = SortArrayAtoZ(myArray)'Envía la matriz a través de un cuadro de mensajeFor i = LBound(myArray) To UBound(myArray) MsgBox myArray(i)Next iEnd Sub

Ordenar la matriz AZ

Me gusta usar una función, en lugar de un sub, para ordenar una matriz. La función es una pieza de código reutilizable, puede formar parte de su módulo 'Core', que puede copiar en cualquier proyecto VBA. Esta función toma una matriz como variable y genera la misma matriz ordenada en orden alfabético.

Función SortArrayAtoZ(myArray As Variant)Dim i As LongDim j As LongDim Temp'Ordenar la matriz A-ZFor i = LBound(myArray) To UBound(myArray) - 1 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 jNext iSortArrayAtoZ = myArrayEnd Función

Ordenar la matriz ZA

La función inversa para ordenar la matriz ZA

Función SortArrayZtoA(myArray As Variant)Dim i As LongDim j As LongDim Temp'Ordenar la matriz Z-AFor i = LBound(myArray) To UBound(myArray) - 1 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 jNext iSortArrayZtoA = myArrayEnd Función

Deja una respuesta

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

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...