Denna handledning visar hur du tar bort eller infogar rader baserat på cellvärden.
Radera rad baserat på cellvärde
Detta kommer att gå igenom ett intervall och radera rader om kolumn A säger "ta bort".
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om .Range ("A" & rad) .Value = "delete" Då.Range ("A" och rad) .EntireRow.DeleteAvsluta omNästa radSluta medAvsluta Sub |
Vi måste starta slingan med den nedre raden eftersom att radera en rad kommer att flytta data, hoppa över rader om du går från topp till botten.
Observera också att istället för att manuellt skriva in den sista raden beräknar vi den senast använda raden.
Radera rad - baserat på filter
I föregående exempel gick vi igenom raderna och raderade varje rad som uppfyller kriterierna. Alternativt kan vi använda Excel AutoFilter för att filtrera rader baserat på vissa kriterier och sedan radera de synliga raderna:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Deklarera ws -variabelDim ws Som arbetsbladAnge ws = ActiveSheet'Återställ befintliga filterVid fel Återuppta nästaws.ShowAllDataVid fel GoTo 0'Använd filterws.Range ("a1: d100"). Autofilterfält: = 1, Kriterier1: = "ta bort"'Radera raderApplication.DisplayAlerts = Falsktws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = True'Rensa filtretVid fel Återuppta nästaws.ShowAllDataVid fel GoTo 0Avsluta Sub |
Ta bort rad baserat på cellkriterier
Detta går igenom ett intervall och raderar rader om cellen i kolumn A uppfyller vissa kriterier (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om .Range ("A" & rad) .Värde <0 Då.Range ("A" och rad) .EntireRow.DeleteAvsluta omNästa radSluta medAvsluta Sub |
VBA -programmering | Kodgenerator fungerar för dig!
Ta bort rad om cellen är tom
Detta kommer att gå igenom ett område och radera en rad om en cell i kolumn A är tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om .Range ("A" & rad) .Value = "" Då.Range ("A" och rad) .EntireRow.DeleteAvsluta omNästa radSluta medAvsluta Sub |
Ta bort tom rad
Alternativt, om du vill radera en rad om hela raden är tom (Klicka på länken för en något annorlunda metod), kan du använda den här koden:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om WorksheetFunction.CountA (.Rows (Row)) = 0 Då.Rader (rad) .EntireRow.DeleteAvsluta omNästa radSluta medAvsluta Sub |
Ta bort rad om cellen innehåller värde
Detta kommer att gå igenom ett område och radera en rad om cellen i kolumn A inte är tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om .Range ("A" & rad) .Värde "" Då.Range ("A" & rad) .EntireRow.DeleteAvsluta omNästa radSluta medAvsluta Sub |
Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!
Infoga rad baserat på cellvärde
Detta kommer att gå igenom ett område och infoga rader om en viss cell i den raden säger "infoga":
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Deklarera variablerDim LastRow As Long, FirstRow As LongDim Row As LongMed ActiveSheet'Definiera första och sista radenFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)För rad = LastRow till FirstRow Steg -1Om .Range ("A" & rad) .Value = "insert" Då.Range ("A" & rad) .EntireRow.InsertAvsluta omNästa radSluta medAvsluta Sub |