Hvordan dupliserte data og sortere en VBA flerdimensjonal array i Excel

Hvordan dupliserte data og sortere en VBA flerdimensjonal array i Excel


Visual Basic Application (VBA) er programmeringsspråket som Excel inkorporerer i sin Macro redaktør. VBE (Visual Basic Editor) Macro redaktør i Microsoft Excel tillater brukere å skrive enkle programmer som automatiserer redundante oppgaver. Her vil vi skrive en VBA Macro som vil duplisere data i et regneark, sortere det i en flerdimensjonal array og skrive det til et nytt verk ark. Denne prosessen er nyttig når en sortert regneark er nødvendig, men den opprinnelige, usortert regneark må forbli intakt.

Bruksanvisning

1 Start Excel ved å klikke på "Start", "Microsoft Office Suite", "Excel".

2 Start Visual Basic Editor (VBE) ved å trykke "ALT" og "F11" samtidig.

3 Skriv prosessen for å kopiere et regneark i en flerdimensjonal array. Velg følgende kode og kopiere den inn i VBE:

Sub Read_Into_Array ()

Dim arrData () As Variant

Dim ColACount As Long

Dim i As Long

ColACount = Range (Range ( "A1"), Range ( "A" og Rows.Count) END (xlUp)). Count

ReDim arrData (1 Til ColACount, 1 til 2)

For i = 1 Til ColACount

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

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

Neste jeg

End Sub

4 Sortere matrise med VBA Bubble Sorter prosess. Kopier og lim inn følgende kode under koden fra forrige trinn. Det vil sortere todimensjonal matrise:

Sub Sort_Array ()

SortColumm1 = 0

SortColumn2 = 3

For i = LBound (ArrayName, 1) Å UBound (ArrayName, 1) - 1

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

Condition1 = ArrData (j, SortColumn1)> ArrData (j + 1, SortColumn1)

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

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

Hvis Condition1 eller Condition2 deretter

For y = LBound (ArrData, 2) Å UBound (ArrData, 2)

t = ArrData (j, y)

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

ArrayName (j + 1, y) = t

Neste y

Slutt om

neste

neste

End Sub

5 Lag den nye regneark som skal inneholde de sorterte data. Kopier og lim inn følgende kode under kode som er oppført så langt:

Sub New_Worksheet ()

Dim WS som regneark

Sett WS = Sheets.Add

End Sub

6 Kopier array til det nye regnearket. Kopier og lim inn følgende kode under koden opprettet ovenfor:

Sub Copy_Array ()

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

End Sub

7 Lagre Macro. Klikk på "File", "Lagre", gi den et navn og klikk "Lagre".

8 Kjør Macro. Åpne et regneark som du ønsker å kopiere og sortere. Klikk "Verktøy", "Makroer", velg makroen du nettopp opprettet. Den nye regnearket vises og oppdateres automatisk.

Hint

  • Eksempelet koden her vil sortere tabellen i stigende rekkefølge (az, 0-9) For å snu rekkefølgen av den typen, endre ">" i femte og syvende linjer av trinn fire til "<".