Tecnología

Inicio

Cómo duplicar datos y ordenar una matriz multidimensional de VBA en Excel

Cómo duplicar datos y ordenar una matriz multidimensional de VBA en Excel


La aplicación de Visual Basic (VBA) es el lenguaje de programación que Excel incorpora en su editor de macros. El editor de macros VBE (Editor de Visual Basic) en Microsoft Excel permite a los usuarios escribir programas sencillos que automatizan las tareas redundantes. Aquí vamos a escribir una macro VBA que duplicar los datos en una hoja de cálculo, ordenarla en una matriz multidimensional y escribirla en una nueva hoja de trabajo. Este proceso es útil cuando se necesita una hoja de cálculo ordenada, pero la hoja de trabajo original, no seleccionados deben permanecer intactos.

Instrucciones

1 Lanzar Excel haciendo clic en "Inicio", "Microsoft Office Suite", "Excel".

2 Iniciar el Editor de Visual Basic (VBE) pulsando la tecla "ALT" y "F11" al mismo tiempo.

3 Escribir el procedimiento para copiar una hoja de cálculo en una matriz multidimensional. Seleccionar el siguiente código y copiarlo en el VBE:

Sub Read_Into_Array ()

Dim arrData () como variante

Dim ColACount As Long

Dim i As Long

ColACount = Rango (Range ( "A1"), Range ( "A" y Rows.Count) .End (xlUp)). Count

ReDim arrData (1 Para ColACount, de 1 a 2)

Para i = 1 a ColACount

arrData(i, 1) = Range("A" & i).Value

arrData (i, 2) = Range ( "B" & amp; i) .Value

Siguiente yo

End Sub

4 Ordenar la matriz con el proceso de ordenamiento de burbuja VBA. Copiar y pegar el siguiente código debajo del código de la etapa anterior. Será ordenar la matriz bidimensional:

Sub Sort_Array ()

SortColumm1 = 0

SortColumn2 = 3

Para i = LBound (ArrayName, 1) Para UBound (ArrayName, 1) - 1

For j = LBound(ArrData, 1) To UBound(ArrData, 1) - 1

Condición1 = ArrData (j, SortColumn1)> ArrData (j + 1, SortColumn1)

Condition2 = ArrData (j, SortColumn1) = ArrData (j + 1, SortColumn1) y _

ArrData (j, SortColumn2)> ArrData (j + 1, SortColumn2)

Si Condición1 o Condición2 continuación,

Para y = LBound (ArrData, 2) Para UBound (ArrData, 2)

t = ArrData (j, y)

ArrData (j, y) = ArrData (j + 1, y)

ArrayName (j + 1, y) = t

Siguiente y

Terminara si

Siguiente

Siguiente

End Sub

5 Crear la nueva hoja de cálculo que contiene los datos ordenados. Copiar y pegar el siguiente código debajo del código de la lista hasta el momento:

Sub New_Worksheet ()

WS tenue como Hoja de trabajo

Establecer WS = Sheets.Add

End Sub

6 Copiar la matriz a la nueva hoja de cálculo. Copiar y pegar el siguiente código debajo del código creado anteriormente:

Copy_Array sub ()

[A1] .Resize (UBound (myArr), UBound (Application.Transpose (myArr))) = myArr

End Sub

7 Guardar la macro. Haga clic en "Archivo", "Guardar", darle un nombre y haga clic en "Guardar".

8 Ejecutar la macro. Abra una hoja de cálculo que desea copiar y ordenar. Haga clic en "Herramientas", "Macros", seleccione la macro que acaba de crear. La nueva hoja de cálculo aparecerá y rellenar automáticamente.

Consejos y advertencias

  • El código de ejemplo aquí será ordenar la matriz en orden ascendente (AZ, 0-9) Para invertir el orden de la clasificación, cambiar el ">" en la quinta y séptima líneas de paso de cuatro a "<".