Sortering Regneark

December 29  by Eliza

Hvis du arbeider på et prosjekt som bruker mye av regneark i en arbeidsbok, kan det være lurt å sortere dem etter regneark navn. Følgende kort makro vil gjøre utslaget veldig pent:

Sub SortSheets ()
Dim jeg As Integer, J As Integer

For jeg = 1 Til Sheets.Count - 1
For J = I + 1 Til Sheets.Count
Hvis UCase (Sheets (I) .name)> UCase (Sheets (J) .name) Deretter
Ark (J) .Kjør Før: = Sheets (I)
End If
Neste J
Neste jeg
End Sub

Denne makroen fungerer hvis du har et relativt lavt antall regneark i arbeidsboken. Hvis, når du kjører makroen, du være oppmerksom på at det tar mye tid å kjøre, kan det være lurt å bruke en mer effektiv sorteringsalgoritme i makroen. For eksempel er følgende en versjon som leser navnene på alle regnearkene i en matrise, sorterer tabellen med BubbleSort algoritmen, og deretter gjør selve arrangere:

Sub SortSheets ()
Dim jeg As Integer
Dim sMySheets () As String
Dim iNumSheets As Integer

iNumSheets = Sheets.Count
Redim sMySheets (1 til iNumSheets)

For jeg = 1 Til iNumSheets
sMySheets (I) = Sheets (I) .name
Neste jeg

BubbleSort sMySheets

For jeg = 1 Til iNumSheets
Ark (sMySheets (I)) Flytt Før:. = Sheets (I)
Neste jeg
End Sub

Sub BubbleSort (sToSort () As String)
Dim Nedre As Integer, Øvre As Integer
Dim jeg As Integer, J As Integer, K As Integer
Dim Temp As String

Lavere = LBound (sToSort)
Øvre = UBound (sToSort)
For jeg = Nedre til Øvre - 1
K = I
For J = I + 1 Til Øvre
Hvis sToSort (K)> sToSort (J) Deretter
K = J
End If
Neste J
Hvis jeg <> K Deretter
Temp = sToSort (I)
sToSort (I) = sToSort (K)
sToSort (K) = Temp
End If
Neste jeg
End Sub

Alle som har programmert for en stund vet at BubbleSort er en god generell sortering rutine, men det er raskere de tilgjengelige. For eksempel, hvis du har ganske mange regneark, og de begynner veldig uorganisert, kan du finne at Quicksort algoritmen er mer gunstig. Alt du trenger å gjøre for å endre den ovenfor for å bruke Quicksort er tilsett Quicksort algoritme som en subrutine (du kan finne algoritmen i enhver god Visual Basic programmering bok) og deretter ringe prosedyren fra innenfor hoved SortSheets makro. (Dette betyr å endre linjen der BubbleSort heter nå.)

Det er en annen forskjell mellom denne andre makro- og den første. Den første makro ikke ta hensyn til når det gjelder teksten som brukes til å navngi regnearkene. Dermed vil Min Regneark bli sett det samme som min regneark. Den andre makro gjør ta hensyn til tekst tilfelle, og sorterer deretter. Selvfølgelig, dette er ikke et spesielt stort problem, siden Excel ikke ta hensyn til saken i regnearknavn, heller.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (1959) gjelder for Microsoft Excel 97, 2000, 2002, og 2003.