Ovaj će vodič pokazati kako izbrisati ili umetnuti retke na temelju vrijednosti ćelije.
Brisanje retka na temelju vrijednosti ćelije
Ovo će proći kroz raspon i izbrisati retke ako stupac A kaže "obriši".
1234567891011121314151617181920 | PodizbrišiRowsBasedonCellValue ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = LastRow do FirstRow Korak -1Ako .Range ("A" & Row) .Value = "delete" Zatim.Range ("A" & Row) .EntireRow.DeleteZavrši akoSljedeći redZavrši sKraj podm |
Moramo započeti petlju s donjim redom jer će brisanje retka pomaknuti podatke, preskačući retke ako petlju vršite prema dolje.
Također, imajte na umu da umjesto ručnog unosa u zadnji red, izračunavamo zadnji upotrijebljeni redak.
Izbriši redak - na temelju filtra
U prethodnom primjeru smo petljali kroz retke, brišući svaki redak koji zadovoljava kriterije. Alternativno, možemo koristiti Excelov autofilter za filtriranje redaka na temelju nekih kriterija, a zatim izbrisati vidljive retke:
12345678910111213141516171819202122232425 | PodfilterAndDeleteRows ()'Proglasi ws varijablomZatamni kao radni listPostavite ws = ActiveSheet'Poništi postojeće filtreUključeno Slijedi nastavak greškews.ShowAllDataUključeno Greška Idi na 0'Primijeni filtarws.Range ("a1: d100"). Polje automatskog filtriranja: = 1, Kriterij1: = "brisanje"'Izbriši retkeApplication.DisplayAlerts = Netačnows.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .BrisatiApplication.DisplayAlerts = Istina'Očisti filtarUključeno Slijedi nastavak greškews.ShowAllDataUključeno Greška Idi na 0Kraj podm |
Brisanje retka na temelju ćelijskih kriterija
Ovo će se pomicati kroz raspon i brisati retke ako ćelija u stupcu A zadovoljava određene kriterije (<0):
1234567891011121314151617181920 | PodizbrišiRowsBasedonCellValue ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = LastRow do FirstRow Korak -1Ako .Range ("A" & Red) .Vrijednost <0 Tada.Range ("A" & Row) .EntireRow.DeleteZavrši akoSljedeći redZavrši sKraj podm |
VBA programiranje | Generator koda radi za vas!
Izbriši redak ako je ćelija prazna
Ovo će se kretati kroz raspon i brisati redak ako je ćelija u stupcu A prazna:
1234567891011121314151617181920 | PodizbrišiRowsBasedonCellValue ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = LastRow do FirstRow Korak -1Ako .Range ("A" & Row) .Value = "" Zatim.Range ("A" & Row) .EntireRow.DeleteZavrši akoSljedeći redZavrši sKraj podm |
Brisanje praznog retka
Alternativno, ako želite izbrisati redak ako je cijeli redak prazan (kliknite vezu za malo drugačiju metodu), možete upotrijebiti ovaj kod:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = zadnji red do prvog reda korak -1Ako je WorksheetFunction.CountA (.Rows (Row)) = 0 Tada.Redovi (Red) .CijeliRed.BrisanjeZavrši akoSljedeći redZavrši sKraj podm |
Izbriši redak ako ćelija sadrži vrijednost
Ovo će se kretati kroz raspon i brisati redak ako ćelija u stupcu A nije prazna:
1234567891011121314151617181920 | PodizbrišiRowsBasedonCellValue ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = zadnji red do prvog reda korak -1Ako .Range ("A" & Red) .Vrijednost "" Zatim.Range ("A" & Row) .EntireRow.DeleteZavrši akoSljedeći redZavrši sKraj podm |
Umorni ste od traženja primjera VBA koda? Isprobajte AutoMacro!
Umetnite redak na temelju vrijednosti ćelije
Ovo će se kretati kroz raspon, umetajući retke ako određena ćelija u tom retku kaže "umetni":
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Deklarirajte varijableDim LastRow As Long, FirstRow As LongDim Row As LongUz ActiveSheet'Definirajte prvi i zadnji redPrvi red = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Petlje kroz redove (odozdo prema gore)Za red = zadnji red do prvog reda korak -1Ako .Range ("A" & Row) .Value = "insert" Zatim.Range ("A" & Row) .EntireRow.InsertZavrši akoSljedeći redZavrši sKraj podm |