Denne vejledning viser, hvordan du sletter eller indsætter rækker baseret på celleværdier.
Slet række baseret på celleværdi
Dette vil gå gennem et område og slette rækker, hvis kolonne A siger "slet".
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarér variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis .Range ("A" & række) .Value = "delete" Herefter.Range ("A" og række) .EntireRow.DeleteAfslut HvisNæste rækkeAfslut medAfslut Sub |
Vi skal starte sløjfen med den nederste række, fordi sletning af en række vil flytte dataene, og springe rækker over, hvis du løkker top til bund.
Bemærk også, at vi i stedet for manuelt at indtaste i den sidste række, beregner vi den sidst anvendte række.
Slet række - Baseret på filter
I det foregående eksempel sløjfede vi gennem rækkerne og slettede hver række, der opfylder kriterierne. Alternativt kan vi bruge Excel's AutoFilter til at filtrere rækker baseret på nogle kriterier og derefter slette de synlige rækker:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Deklarere ws -variabelDim ws Som regnearkIndstil ws = ActiveSheet'Nulstil eksisterende filtreVed fejl Genoptag næstews.ShowAllDataVed fejl GoTo 0'Anvend filterws.Range ("a1: d100"). Autofilterfelt: = 1, Kriterier1: = "slet"'Slet rækkerApplication.DisplayAlerts = Falskws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = True'Ryd filterVed fejl Genoptag næstews.ShowAllDataVed fejl GoTo 0Afslut Sub |
Slet række baseret på cellekriterier
Dette vil gå gennem et område og slette rækker, hvis cellen i kolonne A opfylder visse kriterier (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarér variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis .Range ("A" og række) .Værdi <0 Herefter.Range ("A" og række) .EntireRow.DeleteAfslut HvisNæste rækkeAfslut medAfslut Sub |
VBA -programmering | Kodegenerator virker for dig!
Slet række, hvis cellen er tom
Dette vil gå gennem et område og slette en række, hvis en celle i kolonne A er tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarér variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis .Range ("A" & række) .Value = "" Så.Range ("A" og række) .EntireRow.DeleteAfslut HvisNæste rækkeAfslut medAfslut Sub |
Slet tom række
Alternativt, hvis du vil slette en række, hvis hele rækken er tom (Klik på linket for en lidt anden metode), kan du bruge denne kode:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Deklarér variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis WorksheetFunction.CountA (.Rows (Row)) = 0 Herefter.Rækker (række) .EntireRow.DeleteAfslut HvisNæste rækkeAfslut medAfslut Sub |
Slet række, hvis cellen indeholder værdi
Dette vil gå gennem et område og slette en række, hvis cellen i kolonne A ikke er tom:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Erklær variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis .Range ("A" & række) .Værdi "" Så.Range ("A" og række) .EntireRow.DeleteAfslut HvisNæste rækkeAfslut medAfslut Sub |
Træt af at søge efter eksempler på VBA -kode? Prøv AutoMacro!
Indsæt række baseret på celleværdi
Dette vil gå gennem et område og indsætte rækker, hvis en bestemt celle i den række siger "indsæt":
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Deklarér variablerDim LastRow så længe, FirstRow så længeDim Row Så LangMed ActiveSheet'Definer første og sidste rækkeFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (bund til top)For række = sidste række til første række trin -1Hvis .Range ("A" & række) .Value = "insert" Herefter.Range ("A" og række) .EntireRow.InsertAfslut HvisNæste rækkeAfslut medAfslut Sub |