Tilføjelse og sletning af rækker er en del af hverdagens almindelige opgaver, når du arbejder med Excel.
Selvom du nemt kan gøre dette fra selve regnearket, kan du nogle gange bruge VBA -ruten til at slette rækker i Excel. Disse kan være sletning af en bestemt række, flere rækker i markeringen, sletning af alternative rækker eller dem, der har en bestemt værdi i den.
I denne vejledning viser jeg dig, hvordan du sletter rækker i Excel ved hjælp af VBA (flere scenarier).
Så lad os komme i gang!
Slet en hel række ved hjælp af VBA
Hvis du vil slette en hel række i Excel ved hjælp af VBA, skal du bruge metoden EntireRow.Delete.
Hvis du f.eks. Vil slette hele den første række i et regneark, kan du bruge nedenstående kode:
Sub DeleteEntireRow () Rækker (1) .EntireRow.Delete End Sub
Ovenstående kode angiver først den række, der skal slettes (hvilket gøres ved at angive nummeret i parentes) og bruger derefter metoden EntireRow.Delete til at slette den.
Du kan også slette flere rækker ved at angive disse rækker i koden.
For eksempel vil nedenstående kode slette række nummer 1, 5 og 9 i regnearket:
Sub DeleteEntireRow () Rækker (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub
Ovenstående kode bruger den samme logik, hvor den angiver rækkenumrene, og Excel vil slette disse rækker en efter en.
VIGTIGT: Når du sletter rækker med noget, der ligner ovenstående kode, skal du huske at begynde at slette fra bunden og derefter gå op. For eksempel, hvis du starter øverst og sletter række 1 først, flyttes alle rækker nedenfor den en række op, og nummereringen er deaktiveret (da række 5 ville blive til række 4 og så videre)Slet alle rækker i markeringen
Hvis du vil slette alle rækkerne i et valgt celleområde, kan du bruge VBA -makrokoden herunder:
Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub
Ovenstående kode gælder for metoden EntireRow.Delete for hele udvalget.
Slet alternative rækker (eller Slet hver tredje/fjerde/niende række)
Nogle gange får du muligvis et datadump, hvor hver anden række (eller tredje, fjerde eller niende række) er ubrugelig og skal slettes.
Jeg plejede at arbejde med økonomiske data, hvor hver anden række var tom og skulle slettes.
Dette er den type scenario, hvor VBA virkelig skinner.
Nedenfor er VBA -koden, der går igennem alle rækker i markeringen og sletter hver anden række:
Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub
Lad mig forklare, hvordan denne VBA -kode fungerer.
For det første har jeg brugt en variabel RCount for at få det samlede antal rækker i markeringen.
Så har jeg brugt en For Next loop til at køre dette så mange gange som mange rækker er der. For eksempel, hvis der er 12 rækker, løber denne loop fra 12 til 1 (dvs. 12 gange). Det er vigtigt at køre dette fra den sidste række i markeringen til den første, da vi ikke ønsker, at rækkenumrene skal ændres, når en række slettes.
Trin -2 bruges også, da vi skal slette hver anden række (fra bund til top). Hvis du vil slette hver tredje række, kan du bruge -3.
Inden for VBA -sløjfen har jeg brugt metoden Selection.Rows (i) .EntireRow.Delete til at slette hver anden række.
Slet tomme rækker med VBA
Du kan også bruge metoden EntireRow.Delete til at slette alle tomme rækker.
Nedenfor er VBA -koden, der vælger tomme celler i det valgte datasæt og sletter hele rækken.
Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub
Ovenstående kode bruger egenskaben SpecialCells til at markere og slette alle de celler, der er tomme. Dette er den samme metode, som også giver os mulighed for at bruge dialogboksen 'Gå til speciel' til at markere alle tomme celler.
Når disse tomme celler er identificeret ved hjælp af SpecialCell, slettes disse derefter ved hjælp af metoden EntireRow.Delete.
Bemærk: Denne metode vælger celler, der er tomme og ikke kontrollerer, om hele rækken er blank eller ej. Så hvis nogen celle er tom i en række, ville dette stadig slette hele rækken.Slet rækker med et bestemt ord/værdi
Du kan også bruge en simpel VBA -kode til at gå igennem hver celle i det valgte område og slette alle de rækker, hvor en celle indeholder en bestemt tekst eller værdi.
Antag f.eks., At du har et datasæt, og jeg vil slette alle celler, der har teksten Printer i kolonne 2 i markeringen.
Nedenfor er koden, der gør dette:
Sub DeleteRowswithSpecificValue () For i = Selection.Rows.Count til 1 trin -1 Hvis celler (i, 2) .Value = "Printer" derefter celler (i, 2) .EntireRow.Delete Slut hvis næste i End Sub
Ovenstående kode tæller først det samlede antal rækker i markeringen. Dette vil sikre, at sløjfen kun køres mange gange. Det bruger derefter 'For Next loop' til at gå gennem alle cellerne i kolonne 2.
IF THEN ELSE -sætningen bruges derefter til at kontrollere værdien i hver celle i kolonne 2. Og hvis værdien/teksten matcher den angivne tekst (som er ‘Printer’ i dette eksempel).
I dette eksempel har jeg kontrolleret, om teksten matcher en bestemt streng eller ej. Du kan også gøre dette med værdier. For eksempel kan du slette alle rækker, hvor salgsværdien er mindre end 1000 eller mere end 1000.
Bemærk: En vigtig ting at bemærke her er, at løkken løber fra Selection.Rows.Count til 1 for at sikre, at når en række slettes, påvirker det ikke rækkerne over den.
Sådan bruges denne VBA -kode
Lad mig nu vise dig, hvordan du bruger alle de koder, der er nævnt i denne vejledning, til at slette hele rækken.
Du skal kopiere og indsætte disse koder i et modul i Excel VB Editor. Når du har kopieret disse koder, kan du derefter køre makrokoderne.
Nedenfor er trinene til at kopiere og indsætte disse VBA -koder i et modul:
- Hold ALT -tasten nede, og tryk på F11 -tasten (eller Funktion + Option + F11 i Mac). Dette åbner VB Editor
- I VB Editor har du projektudforskeren til venstre. Hvis du ikke kan se det, skal du gå til indstillingen Vis og derefter klikke på Project Explorer.
- Højreklik på et hvilket som helst objekt i Project Explorer (for projektmappen, hvor du vil køre koden).
- Gå til Indsæt, og klik derefter på Modul. Dette vil indsætte et nyt modul til projektmappen
- Kopier og indsæt ovenstående koder i modulet.
Og for at køre disse koder kan du placere markøren hvor som helst i koden (som du vil køre) og trykke på F5 -tasten (eller klikke på den grønne trekant i VBA -værktøjslinjen).
Jeg har også skrevet en detaljeret vejledning om forskellige måder at køre VBA -makrokoder i Excel.
Hvis du skal bruge nogen af disse koder ret ofte, kan du også overveje at tilføje disse til Personal Macro Workbook og derefter til QAT. På denne måde vil koden være tilgængelig for dig i en hvilken som helst af dine projektmapper med et enkelt klik.Så det var nogle VBA -koder, som du kan bruge til at slette hele rækker i Excel (i forskellige scenarier). Den samme logik kan også anvendes, hvis du vil slette kolonner i stedet for rækker (med den tilsvarende justering i kodeeksemplerne).
Håber du fandt denne vejledning nyttig!