Denne opplæringen vil demonstrere hvordan du sletter eller setter inn rader basert på celleverdier.
Slett rad basert på celleverdi
Dette vil gå gjennom et område og slette rader hvis kolonne A sier "slett".
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis .Range ("A" og rad) .Value = "delete" Deretter.Range ("A" og rad) .EntireRow.DeleteSlutt omNeste radSlutt medSlutt Sub |
Vi må starte sløyfen med den nederste raden, fordi sletting av en rad vil flytte dataene, hoppe over rader hvis du går fra topp til bunn.
Legg også merke til at i stedet for å skrive inn manuelt i den siste raden, beregner vi den siste brukte raden.
Slett rad - Basert på filter
I det forrige eksemplet gikk vi gjennom radene og slettet hver rad som oppfyller kriteriene. Alternativt kan vi bruke Excel's AutoFilter til å filtrere rader basert på noen kriterier og deretter slette de synlige radene:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Erklær ws -variabelDim ws Som regnearkSett ws = ActiveSheet'Tilbakestill eksisterende filtreVed feil Fortsett nestews.ShowAllDataVed feil GoTo 0'Bruk filterws.Range ("a1: d100"). Autofilterfelt: = 1, Kriterier1: = "slett"'Slett raderApplication.DisplayAlerts = Falskws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .SlettApplication.DisplayAlerts = True'Fjern filteretVed feil Fortsett nestews.ShowAllDataVed feil GoTo 0Slutt Sub |
Slett rad basert på cellekriterier
Dette går gjennom et område og sletter rader hvis cellen i kolonne A oppfyller visse kriterier (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis .Range ("A" og rad) .Værdi <0 Da.Range ("A" og rad) .EntireRow.DeleteSlutt omNeste radSlutt medSlutt Sub |
VBA -programmering | Kodegenerator fungerer for deg!
Slett rad hvis cellen er tom
Dette vil gå gjennom et område og slette en rad hvis en celle i kolonne A er tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis .Range ("A" og rad) .Value = "" Da.Range ("A" og rad) .EntireRow.DeleteSlutt omNeste radSlutt medSlutt Sub |
Slett blank rad
Alternativt, hvis du vil slette en rad hvis hele raden er tom (Klikk på lenken for en litt annen metode), kan du bruke denne koden:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis WorksheetFunction.CountA (.Rows (Row)) = 0 Da.Rader (rad) .EntireRow.DeleteSlutt omNeste radSlutt medSlutt Sub |
Slett rad hvis cellen inneholder verdi
Dette vil gå gjennom et område og slette en rad hvis cellen i kolonne A ikke er tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis .Range ("A" og rad) .Værdi "" Da.Range ("A" og rad) .EntireRow.DeleteSlutt omNeste radSlutt medSlutt Sub |
Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!
Sett inn rad basert på celleverdi
Dette vil gå gjennom et område og sette inn rader hvis en bestemt celle i den raden sier "sett inn":
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Erklær variablerDim LastRow så lenge, FirstRow så lengeDim Row As LongMed ActiveSheet'Definer første og siste radFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sløyfe gjennom rader (bunn til topp)For rad = LastRow til FirstRow Trinn -1Hvis .Range ("A" og rad) .Value = "insert" Deretter.Range ("A" og rad) .EntireRow.InsertSlutt omNeste radSlutt medSlutt Sub |