Sorter regnearkene i en arbeidsbok ved hjelp av VBA i Microsoft Excel

Anonim

I denne artikkelen har vi gitt detaljer om hvordan du sorterer regnearkene i arbeidsboken i stigende eller synkende rekkefølge, avhengig av regnearkets navn.

I den vedlagte arbeidsboken er det to moduler:-

Modul 1 inneholder makroen "SortWorksheets" som er tilordnet "Send" -knappen på "Makro" -arket.

Denne makroen sorterer alle regnearkene bortsett fra det første regnearket som er hovedarket som heter "Makro".

Når brukeren klikker på "Send" -knappen, blir alle arkene etter "Makro" -arket sortert i stigende eller synkende rekkefølge som valgt av brukeren i kombinasjonsboksen.

Modul 2 inneholder to makroer "AscendingSortOfWorksheets" og "DecendingSortOfWorksheets". Når du kjører makroen "AscendingSortOfWorksheets", sorterer den alle regnearkene som er tilstede i arbeidsboken i stigende rekkefølge. Når du kjører makroen "DecendingSortOfWorksheets", sorterer den alle regnearkene som er tilstede i arbeidsboken i synkende rekkefølge.

Logisk forklaring

Boblesorteringsalgoritme brukes til å sortere regnearkene i arbeidsboken.

Boblesorteringsalgoritme sammenligner hvert element i matrisen med andre elementer i matrisen og bytter dem avhengig av om de skal sortere i stigende eller synkende rekkefølge. I hvert trinn bobler den minste eller største verdien til toppen av matrisen. Algoritmen gjentas til alle elementene er sortert.

I denne artikkelen er målet vårt å sortere regnearkene i arbeidsboken etter navn. Arbeidsboken som vi bruker består av forskjellige regneark med navn som Financial Dashboard, Human Resources og Sales Dashboard.

For å oppnå dette målet har vi brukt Boblesorteringsalgoritme for å sortere regnearkene.

Kode forklaring

SortWorksheets Makro

Denne makroen kjøres når brukeren klikker på send -knappen. Denne makroen vil sortere alle regnearkene i arbeidsboken etter navn bortsett fra det første regnearket i arbeidsboken. Avhengig av verdien valgt av brukeren i kombinasjonsboksen, vil den sortere regnearkene i stigende eller synkende rekkefølge.

Følg trinnene nedenfor for å legge til kombinasjonsboks:-

  1. Gå til kategorien Utvikler> Klikk på Sett inn> Klikk kombinasjonsboksen under skjemakontroll

  1. Høyreklikk på kombinasjonsboksen og klikk på formatkontroll.

  1. Gå til kontrollfanen, Tilordne elementet og lenke kombinasjonsboksen med celle XFC1.

ComboBoxValue = Område ("XFC1"). Verdi

Kombinasjonsboksen på "Makro" -arket er koblet til celle XFC1. Så, for å få verdi fra celle XFC1, brukes ComboBoxValue -variabelen.

For i = 2 For å telle - 1

FOR loop begynner med variabel i, verdi starter fra 2 ettersom vi ønsker å ekskludere det første regnearket i arbeidsboken fra sortering.

Hvis ComboBoxValue = 1 Da

IF -betingelse brukes for å kontrollere om den skal sorteres i stigende eller synkende rekkefølge. HVIS ComboBoxValue -verdien er 1, sorter deretter i stigende rekkefølge, ellers synkende rekkefølge.

Regneark sortert i stigende rekkefølge

Regneark sortert i synkende rekkefølge

AscendingSortOfWorksheets og DecendingSortOfWorksheets

AscendingSortOfWorksheets og DecendingSortOfWorksheets makroer kan kjøres ved å trykke Alt + F8 hurtigtast eller Gå til Utvikler -fanen> Klikk på Makro> velg makroen og klikk på kjør. De vil sortere alle regnearkene som finnes i arbeidsboken. Disse makroene kan også kjøres på andre arbeidsbøker.

Regneark sortert etter at du har kjørt AscendingSortOfWorksheets -makro

Regneark sortert i stigende rekkefølge DecendingSortOfWorksheets -makro

Følg koden nedenfor

 Sub AscendingSortOfWorksheets () 'Sorter regneark i en arbeidsbok i stigende rekkefølge Dim SCount, i, j As Integer' For deaktivering av skjermoppdateringer Application.ScreenUpdating = False 'Får totalt nr. av arbeidsark i arbeidsbok SCount = Worksheets.Count 'Kontrollerer tilstanden om antall regneark er større enn 1, Hvis tellingen er én, avslutt prosedyren Hvis SCount = 1 Avslutt deretter Sub' Using Bubble sort as sorting algoritme 'Looping through all worksheets For i = 1 Til SCount - 1 'Gjør sammenligning av valgt arknavn med andre ark for å flytte valgt ark til riktig posisjon For j = i + 1 Til SCount Hvis regneark (j) .navn  Regneark (i) .Name Deretter Arbeidsark (j). Flytt før: = Regneark (i) Slutt Hvis Neste j Neste i Slutt Sub 

Hvis du likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.

Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post