Odstranění řádku pomocí VBA

v aplikaci Excel můžete řádek odstranit kliknutím pravým tlačítkem myši na číslo řádku a výběrem možnosti Odstranit. Ale pokud chcete odstranit řádky pomocí sofistikovanějších metod, musíte použít VBA. Umožní vám odstranit řádky mnoha různými způsoby.

odstranit konkrétní řádek

nejzákladnějším způsobem odstranění řádku ve VBA je použití čísla řádku.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

tím se odstraní čtvrtý řádek při každém spuštění makra.

smazat více řádků

můžete také odstranit několik řádků najednou. Místo výběru čísla řádku vyberte rozsah řádků.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

odstraní řádky 2, 3 a 4.

Odstranit vybrané řádky

zatím jsme vytvořili makra, které odstraněné řádky s pevnými čísly uvnitř kódu. Tentokrát odstraníme řádky z výběru. Použijeme následující kód.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

Odstranit prázdné řádky

V tomto příkladu, Excel určuje, které buňky jsou prázdné, vybere je a odstraňuje řádky, ve kterých jsou přítomny.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

Toto makro odstraní řádky z výběru pouze v případě, že obsahuje slova „Špatný Řádek“.

upozornění

nezapomeňte, že text je citlivý na velká a velká písmena.

Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

analýza Kódu

2. Smyčka prochází každým prvkem ve výběru.

3. Excel kontroluje skutečnou hodnotu buňky a pokud je hodnota přesně „špatný řádek“.

4. Pokud je podmínka splněna, Excel vymaže obsah buňky. Nemůžeme odstranit buňku, protože pozice buňky se změní a některé z „špatných řádků“mohou zůstat.

7. Když jsou všechny“ špatné řádky “ vymazány, Excel vybere tyto buňky.

8. Poté odstraní řádky těchto buněk.

Pokud chcete také odstranit ty řádky, které se skládají z této fráze, a ne pouze přesná shoda, použití funkce InStr. Tato funkce vrací pozici prvního výskytu fráze.

Změna

Cell.Value = "Bad Row"

na

InStr(Cell, "Bad Row") > 0

v našem listu máme čtyři různé příklady. Každý z nich vrátí pozici.

  • „Bad Row“ vrací 1
  • “ Good Row “ vrací 0
  • “ 1 Bad Row „vrací 3
  • “ Bad Row !“vrací 1

to znamená, že všechny řádky kromě „dobrý řádek“ budou odstraněny.

Odstranit řádek, kde buněčný typ je řetězec

V tomto příkladu, budeme-li odstranit řádek, pokud buňka typ je řetězec-string.

na první pohled se zdá, že buňky A3, A4 a A5 jsou stejného typu. Ale když se podíváte na to, co se děje v zákulisí (Ctrl +`), uvidíte, že každý z nich je jiný.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

V druhém řádku, máte následující kód: xlCellTypeConstants. To znamená, že hledáme konstanty. Číslo 2 znamená druhý typ, kterým je text.

Excel vybere pouze hodnoty typu text.

výsledek.

Smazat sudé / liché řádky

nyní odstraníme pouze ty řádky, které jsou sudé.

Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

kód je velmi podobný kódu z předchozího příkladu. Je jen jeden rozdíl.

buňka.Řádek Mod 2 = 0

To znamená, že pokud zbytek po dělení je 0 (pro čísla: 2, 4, 6, 8, …) pak číslo je sudé, pokud je 1, pak je to liché číslo (1, 3, 5, 6, …).

Tabulky a Python nadšence.

zobrazení příspěvků: 72,354

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.