Slik sletter du hele raden i Excel ved hjelp av VBA (eksempler)

Å legge til og slette rader er en del av vanlige vanlige oppgaver når du arbeider med Excel.

Selv om du enkelt kan gjøre dette fra selve regnearket, kan det være lurt å bruke VBA -ruten til å slette rader i Excel. Disse kan være å slette en bestemt rad, flere rader i utvalget, slette alternative rader eller de som har en bestemt verdi i den.

I denne opplæringen vil jeg vise deg hvordan du sletter rader i Excel ved hjelp av VBA (flere scenarier).

Så la oss komme i gang!

Slett en hel rad med VBA

For å slette en hel rad i Excel ved hjelp av VBA, må du bruke metoden EntireRow.Delete.

For eksempel, hvis du vil slette hele den første raden i et regneark, kan du bruke koden nedenfor:

Sub DeleteEntireRow () Rader (1) .EntireRow.Delete End Sub

Koden ovenfor angir først raden som må slettes (som gjøres ved å angi tallet i parentes) og bruker deretter metoden EntireRow.Delete for å slette den.

Du kan også slette flere rader ved å spesifisere disse radene i koden.

For eksempel vil koden nedenfor slette radnummer 1, 5 og 9 i regnearket:

Sub DeleteEntireRow () Rader (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub

Koden ovenfor bruker samme logikk, der den spesifiserer radnummerene og Excel vil slette disse radene en etter en.

VIKTIG: Når du sletter rader med noe som ligner på koden ovenfor, må du huske å begynne å slette fra bunnen og deretter gå opp. For eksempel, hvis du starter øverst og sletter rad 1 først, flyttes alle radene under den en rad opp og nummereringen vil være av (ettersom rad 5 blir rad 4 og så videre)

Slett alle rader i utvalget

Hvis du vil slette alle radene i et valgt celleområde, kan du bruke VBA -makrokoden nedenfor:

Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub

Koden ovenfor gjelder EntireRow.Delete -metoden for hele utvalget.

Slett alternative rader (eller slett hver tredje/fjerde/niende rad)

Noen ganger kan det hende du får en datadump der hver andre rad (eller tredje, fjerde eller niende rad) er ubrukelig og må slettes.

Jeg pleide å jobbe med økonomiske data der hver andre rad var tom og måtte slettes.

Dette er typen scenario der VBA virkelig skinner.

Nedenfor er VBA -koden som går gjennom alle radene i utvalget og sletter annenhver rad:

Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub

La meg forklare hvordan denne VBA -koden fungerer.

Først har jeg brukt en variabel RCount for å få totalt antall rader i utvalget.

Så har jeg brukt en For Next loop til å kjøre dette så mange ganger så mange rader det er. For eksempel, hvis det er 12 rader, vil denne løkken gå fra 12 til 1 (dvs. 12 ganger). Det er viktig å kjøre dette fra den siste raden i utvalget til den første, da vi ikke vil at radnummerene skal endres når en rad blir slettet.

Trinn -2 brukes også siden vi må slette annenhver rad (fra bunn til topp). Hvis du vil slette hver tredje rad, kan du bruke -3.

Innenfor VBA -løkken har jeg brukt Selection.Rows (i) .EntireRow.Delete -metoden for å slette hver alternative rad.

Slett tomme rader med VBA

Du kan også bruke metoden EntireRow.Delete til å slette alle tomme rader.

Nedenfor er VBA -koden som vil velge tomme celler i det valgte datasettet og slette hele raden.

Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub

Koden ovenfor bruker egenskapen SpecialCells til å velge og slette alle cellene som er tomme. Dette er den samme metoden som også lar oss bruke dialogboksen "Gå til spesiell" for å velge alle tomme celler.

Når disse tomme cellene er identifisert ved hjelp av SpecialCell, blir disse deretter slettet ved hjelp av metoden EntireRow.Delete.

Merk: Denne metoden velger celler som er tomme og ikke sjekker om hele raden er tom eller ikke. Så hvis noen celle er tom på rad, vil dette fortsatt slette hele raden.

Slett rader med et bestemt ord/verdi

Du kan også bruke en enkel VBA -kode til å gå gjennom hver celle i det valgte området og slette alle radene der en celle inneholder en bestemt tekst eller verdi.

Anta for eksempel at du har et datasett, og jeg vil slette alle cellene som har teksten Skriver i kolonne 2 i utvalget.

Nedenfor er koden som gjør dette:

Sub DeleteRowswithSpecificValue () For i = Selection.Rows.Count til 1 trinn -1 Hvis celler (i, 2) .Value = "Printer" deretter celler (i, 2) .EntireRow.Delete Slutt hvis neste i slutten Sub

Koden ovenfor teller først det totale antallet rader i utvalget. Dette vil sikre at løkken bare kjøres mange ganger. Den bruker deretter "For Next loop" til å gå gjennom alle cellene i kolonne 2.

IF THEN ELSE -setningen brukes deretter til å kontrollere verdien i hver celle i kolonne 2. Og i tilfelle verdien/teksten samsvarer med den angitte teksten (som er ‘Printer’ i dette eksemplet).

I dette eksemplet har jeg sjekket om teksten samsvarer med en bestemt streng eller ikke. Du kan også gjøre dette med verdier. For eksempel kan du slette alle rader der salgsverdien er mindre enn 1000 eller mer enn 1000.

Merk: En viktig ting å merke seg her er at løkken løper fra Selection.Rows.Count til 1 for å sikre at når en rad blir slettet, påvirker det ikke radene over den.

Slik bruker du denne VBA -koden

La meg nå vise deg hvordan du bruker alle kodene nevnt i denne opplæringen for å slette hele raden.

Du må kopiere og lime inn disse kodene i en modul i Excel VB Editor. Når du har kopiert disse kodene, kan du kjøre makrokodene.

Nedenfor er trinnene for å kopiere og lime inn disse VBA -kodene i en modul:

  1. Hold inne ALT -tasten og trykk på F11 -tasten (eller Funksjon + Alternativ + F11 i Mac). Dette åpner VB Editor
  2. I VB Editor har du prosjektutforskeren til venstre. Hvis du ikke ser det, går du til Vis -alternativet og klikker deretter på Project Explorer.
  3. Høyreklikk på et hvilket som helst objekt i Project Explorer (for arbeidsboken der du vil kjøre koden).
  4. Gå til Sett inn, og klikk deretter på Modul. Dette vil sette inn en ny modul for arbeidsboken
  5. Kopier og lim inn kodene ovenfor i modulen.

Og for å kjøre disse kodene, kan du plassere markøren hvor som helst i koden (som du vil kjøre) og trykke på F5 -tasten (eller klikk på den grønne trekanten på VBA -verktøylinjen).

Jeg har også skrevet en detaljert opplæring om forskjellige måter å kjøre VBA -makrokoder i Excel.

Hvis du trenger å bruke noen av disse kodene ganske ofte, kan du også vurdere å legge dem til i Personal Macro Workbook og deretter til QAT. På denne måten vil koden være tilgjengelig for deg i alle arbeidsbøkene dine med et enkelt klikk.

Så dette var noen VBA -koder som du kan bruke til å slette hele rader i Excel (i forskjellige scenarier). Den samme logikken kan også brukes hvis du vil slette kolonner i stedet for rader (med tilsvarende justering i kodeeksemplene).

Håper du synes denne opplæringen var nyttig!

wave wave wave wave wave