Tento tutoriál ukáže, ako odstrániť alebo vložiť riadky na základe hodnôt buniek.
Odstráňte riadok podľa hodnoty bunky
Toto sa bude opakovať v rozsahu a ak sú v stĺpci A uvedené „odstrániť“, odstránia sa riadky.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak .Range ("A" & riadok) .Value = "delete" Potom.Range („A“ & Row) .EntireRow.DeleteKoniec AkĎalší riadokUkončiť sKoniec pod |
Cyklus musíme začať spodným riadkom, pretože vymazaním riadka sa údaje posunú a riadky sa budú preskakovať, ak budete cyklovať zhora nadol.
Všimnite si tiež, že namiesto ručného zadávania do posledného riadka vypočítame posledný použitý riadok.
Odstrániť riadok - na základe filtra
V predchádzajúcom prípade sme prešli cyklami a odstránili sme každý riadok, ktorý spĺňa kritériá. Prípadne môžeme použiť automatický filter Excelu na filtrovanie riadkov na základe niektorých kritérií a potom odstrániť viditeľné riadky:
12345678910111213141516171819202122232425 | PodfilterAndDeleteRows ()„Vyhláste premennú wsDim ws As worksheetNastaviť ws = ActiveSheet„Obnoviť existujúce filtrePri chybe Pokračovať ďalejws.ShowAllDataPri chybe GoTo 0'Použiť filterws.Range ("a1: d100"). Pole automatického filtra: = 1, kritérium1: = "odstrániť"'Odstráňte riadkyApplication.DisplayAlerts = Falsews.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = Pravda„Vymazať filterPri chybe Pokračovať ďalejws.ShowAllDataPri chybe GoTo 0Koniec pod |
Odstráňte riadok na základe kritérií buniek
Toto sa bude opakovať v rozsahu, pričom sa odstránia riadky, ak bunka v stĺpci A spĺňa určité kritériá (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak .Range („A“ & riadok). Hodnota <0 Potom.Range („A“ & Row) .EntireRow.DeleteKoniec AkĎalší riadokUkončiť sKoniec pod |
Programovanie VBA | Generátor kódu pracuje za vás!
Ak je bunka prázdna, odstráňte riadok
Toto sa bude opakovať v rozsahu a odstráni riadok, ak je bunka v stĺpci A prázdna:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak .Range ("A" & riadok) .Value = "" Potom.Range („A“ & Row) .EntireRow.DeleteKoniec AkĎalší riadokUkončiť sKoniec pod |
Odstráňte prázdny riadok
Alternatívne, ak chcete odstrániť riadok, ak je celý riadok prázdny (kliknutím na odkaz sa dostanete trochu inou metódou), môžete použiť tento kód:
1234567891011121314151617181920 | Sub DeleteBlankRows ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak WorksheetFunction.CountA (.Rows (Row)) = 0 Potom.Riadky (riadok). Celý riadok. OdstrániťKoniec AkĎalší riadokUkončiť sKoniec pod |
Ak bunka obsahuje hodnotu, odstráňte riadok
Toto sa bude opakovať v rozsahu a odstráni riadok, ak bunka v stĺpci A nie je prázdna:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak .Range („A“ a riadok). Hodnota „“ Potom.Range („A“ & Row) .EntireRow.DeleteKoniec AkĎalší riadokUkončiť sKoniec pod |
Ste unavení z hľadania príkladov kódu VBA? Skúste AutoMacro!
Vložiť riadok podľa hodnoty bunky
Toto sa bude opakovať v rozsahu a vloží riadky, ak určitá bunka v tomto riadku hovorí „vložiť“:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()„Vyhláste premennéDim LastRow tak dlho, FirstRow tak dlhoDim Row ako dlhýS programom ActiveSheet„Definujte prvý a posledný riadokPrvý riadok = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Smyčka cez riadky (zdola nahor)Pre riadok = posledný riadok prvý riadok krok -1Ak .Range ("A" & riadok) .Value = "vložte" Potom.Range („A“ & Row) .EntireRow.InsertKoniec AkĎalší riadokUkončiť sKoniec pod |