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 "<".