Slet eller indsæt rækker baseret på celleværdi

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
wave wave wave wave wave