Matriz de clasificación de VBA

Este tutorial demostrará cómo ordenar valores en una matriz en VBA

Ordenar una matriz unidimensional mediante un bucle

Ordenar una matriz requiere un poco de manipulación de datos mediante lazos, variables y matrices temporales.

  • Primero debe completar la matriz con sus valores
  • ¡Entonces necesita recorrer la matriz dos veces! Una vez para obtener un valor de la matriz de elementos actual, y el while todavía en ese bucle, para obtener el valor del siguiente elemento de la matriz.
  • Luego, debe comparar los elementos y mover el segundo a la posición del primero si el segundo está alfabéticamente ANTES del primero.

El siguiente ejemplo demuestra este procedimiento.

1234567891011121314151617181920212223 Sub SortAnArray ()Dim i tan largo'Establecer la matrizDim strName () como varianteDim Temp como variante'poblar la matrizstrName () = Array ("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'recorre el límite del arry y obtén el primer nombrePara i = LBound (strName) a UBound (strName) - 1'recorrer de nuevo y comprobar si el siguiente nombre está alfabéticamente antes o después del originalPara j = i + 1 a UBound (strName)Si UCase (strName (i))> UCase (strName (j)) Entonces'si es necesario mover el nombre antes del nombre anterior, agréguelo a una matriz temporalTemp = strName (j)'intercambia los nombresstrName (j) = strName (i)strName (i) = TempTerminara siSiguiente jSiguiente yo'Salida de la matriz a través de un cuadro de mensajeMsgBox Join (strName (), vbCrLf)End Sub

Si ejecuta este procedimiento, obtendrá el siguiente cuadro de mensaje.

También puede ordenar la matriz en la otra dirección, por ejemplo: Z a A cambiando esta línea de código

1 Si UCase (strName (i))> UCase (strName (j)) Entonces

a esta línea de código

1 Si UCase (strName (i)) <UCase (strName (j)) Entonces

A continuación, aparecerá el siguiente cuadro de mensaje.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave