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.