Ta vadnica bo pokazala, kako izbrisati ali vstaviti vrstice na podlagi vrednosti celic.
Izbriši vrstico glede na vrednost celice
S tem boste prešli skozi obseg in izbrisali vrstice, če stolpec A pravi »izbriši«.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če .Range ("A" & Row) .Value = "delete" Potem.Range ("A" & Row) .EntireRow.DeleteKonec ČeNaslednja vrsticaKončaj sEnd Sub |
Zanko moramo začeti z spodnjo vrstico, ker bo brisanje vrstice premaknilo podatke in preskočilo vrstice, če zankate od zgoraj navzdol.
Upoštevajte tudi, da namesto ročnega vnosa v zadnjo vrstico izračunamo zadnjo uporabljeno vrstico.
Izbriši vrstico - na podlagi filtra
V prejšnjem primeru smo se vrteli skozi vrstice in izbrisali vsako vrstico, ki ustreza merilom. Druga možnost je, da lahko z Excelovim samodejnim filtrom filtriramo vrstice na podlagi nekaterih meril in nato izbrišemo vidne vrstice:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Razglasite spremenljivko wsZatemni kot delovni listNastavite ws = ActiveSheet'Ponastavi obstoječe filtreOn Napaka Nadaljuj Naprejws.ShowAllDataPri napaki Pojdi na 0'Uporabi filterws.Range ("a1: d100"). Polje samodejnega filtriranja: = 1, Merila1: = "izbriši"'Izbriši vrsticeApplication.DisplayAlerts = Napačnows.Range ("a1: d100"). SpecialCells (xlCellTypeVisible).Application.DisplayAlerts = Res'Počisti filterOn Napaka Nadaljuj Naprejws.ShowAllDataPri napaki Pojdi na 0End Sub |
Izbriši vrstico na podlagi celičnih meril
S tem se bo vrtel skozi obseg in izbrisal vrstice, če celica v stolpcu A izpolnjuje določena merila (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če .Range ("A" & Row) .Value <0 Potem.Range ("A" & Row) .EntireRow.DeleteKonec ČeNaslednja vrsticaKončaj sEnd Sub |
Programiranje VBA | Generator kod deluje za vas!
Izbriši vrstico, če je celica prazna
S tem boste prešli skozi obseg in izbrisali vrstico, če je celica v stolpcu A prazna:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če .Range ("A" & Row) .Value = "" Potem.Range ("A" & Row) .EntireRow.DeleteKonec ČeNaslednja vrsticaKončaj sEnd Sub |
Izbriši prazno vrstico
Druga možnost je, da želite izbrisati vrstico, če je celotna vrstica prazna (kliknite povezavo za nekoliko drugačen način), lahko uporabite to kodo:
1234567891011121314151617181920 | Sub DeleteBlankRows ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če je WorksheetFunction.CountA (.Rows (Row)) = 0 Potem.Rows (Row) .EntireRow.DeleteKonec ČeNaslednja vrsticaKončaj sEnd Sub |
Izbriši vrstico, če celica vsebuje vrednost
S tem boste prešli skozi obseg in izbrisali vrstico, če celica v stolpcu A ni prazna:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če .Range ("A" & Row) .Value "" Potem.Range ("A" & Row) .EntireRow.DeleteKonec ČeNaslednja vrsticaKončaj sEnd Sub |
Utrujen od iskanja primerov kode VBA? Preizkusite AutoMacro!
Vstavi vrstico glede na vrednost celice
To se bo vrtelo skozi obseg in vstavljalo vrstice, če določena celica v tej vrstici pravi »vstavi«:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()"Razglasite spremenljivkeZatemni LastRow As Long, FirstRow As LongDim Row As LongZ ActiveSheet„Določite prvo in zadnjo vrsticoFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Od spodaj navzgor)Za vrstico = zadnja vrstica do prve vrstice Korak -1Če .Range ("A" & Row) .Value = "insert" Potem.Range ("A" & Row) .EntireRow.InsertKonec ČeNaslednja vrsticaKončaj sEnd Sub |