Přidávání a odstraňování řádků je součástí každodenních běžných úkolů při práci s Excelem.
I když to můžete udělat snadno ze samotného listu, někdy možná budete chtít použít trasu VBA k odstranění řádků v aplikaci Excel. Může to být odstranění konkrétního řádku, více řádků ve výběru, odstranění alternativních řádků nebo řádků, které v něm mají konkrétní hodnotu.
V tomto tutoriálu vám ukážu, jak odstranit řádky v aplikaci Excel pomocí VBA (více scénářů).
Začněme tedy!
Odstraňte celý řádek pomocí VBA
Chcete -li odstranit celý řádek v aplikaci Excel pomocí VBA, musíte použít metodu EntireRow.Delete.
Pokud například chcete odstranit celý první řádek v listu, můžete použít níže uvedený kód:
Sub DeleteEntireRow () Řádky (1) .EntireRow.Delete End Sub
Výše uvedený kód nejprve určuje řádek, který je třeba odstranit (což se provádí zadáním čísla v závorkách), a poté jej pomocí metody EntireRow.Delete odstraní.
Můžete také odstranit více řádků zadáním těchto řádků v kódu.
Níže uvedený kód například odstraní řádek číslo 1, 5 a 9 v listu:
Dílčí řádky DeleteEntireRow () (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub
Výše uvedený kód používá stejnou logiku, kde určuje čísla řádků a Excel tyto řádky odstraní jeden po druhém.
DŮLEŽITÉ: Když odstraňujete řádky s něčím podobným výše uvedenému kódu, nezapomeňte začít mazat zespodu a pak jít nahoru. Pokud například začnete nahoře a nejprve odstraníte řádek 1, všechny řádky pod ním se posunou o řádek nahoru a číslování bude vypnuto (protože řádek 5 by se stal řádkem 4 a tak dále)Odstranit všechny řádky ve výběru
V případě, že chcete odstranit všechny řádky ve vybraném rozsahu buněk, můžete použít níže uvedený kód makra VBA:
Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub
Výše uvedený kód platí pro metodu EntireRow.Delete na celý výběr.
Odstranit alternativní řádky (nebo Odstranit každý třetí/čtvrtý/N -tý řádek)
Někdy můžete získat výpis dat, kde je každý druhý řádek (nebo třetí, čtvrtý nebo N -tý řádek) k ničemu a je třeba jej odstranit.
Dříve jsem pracoval s finančními daty, kde byl každý druhý řádek prázdný a musel být smazán.
Toto je typ scénáře, kde VBA opravdu září.
Níže je kód VBA, který projde všemi řádky ve výběru a odstraní každý druhý řádek:
Sub DeleteAlternateRows () RCount = Selection.Rows.Count for i = RCount to 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub
Dovolte mi vysvětlit, jak tento kód VBA funguje.
Nejprve jsem použil proměnnou RCount získáte celkový počet řádků ve výběru.
Pak jsem použil smyčku For Next, abych to spustil tolikrát, kolik řádků je. Pokud například existuje 12 řádků, tato smyčka poběží od 12 do 1 (tj. 12krát). Je důležité spustit to od posledního řádku ve výběru k prvnímu, protože nechceme, aby se čísla řádků po odstranění řádku změnila.
Také se používá krok -2, protože musíme odstranit každý další řádek (zdola nahoru). V případě, že chcete odstranit každý třetí řádek, můžete použít -3.
V rámci smyčky VBA jsem použil metodu Selection.Rows (i) .EntireRow.Delete k odstranění každého alternativního řádku.
Odstraňte prázdné řádky pomocí VBA
K odstranění všech prázdných řádků můžete také použít metodu EntireRow.Delete.
Níže je kód VBA, který vybere prázdné buňky ve vybrané datové sadě a odstraní celý řádek.
Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub
Výše uvedený kód používá vlastnost SpecialCells k výběru a odstranění všech buněk, které jsou prázdné. Je to stejná metoda, která nám také umožňuje použít dialogové okno „Přejít na speciální“ k výběru všech prázdných buněk.
Jakmile jsou tyto prázdné buňky identifikovány pomocí SpecialCell, jsou poté odstraněny pomocí metody EntireRow.Delete.
Poznámka: Tato metoda vybírá buňky, které jsou prázdné, a nekontroluje, zda je celý řádek prázdný nebo ne. Pokud je tedy buňka kohokoli v řadě prázdná, odstraní se tím celý řádek.Odstraňte řádky s konkrétním slovem/hodnotou
Můžete také použít jednoduchý kód VBA k procházení každou buňkou ve vybraném rozsahu a odstranění všech řádků, kde buňka obsahuje konkrétní text nebo hodnotu.
Předpokládejme například, že máte datovou sadu a já chci odstranit všechny buňky, které mají ve sloupci 2 výběru text Tiskárna.
Níže je uveden kód, který to provede:
Sub DeleteRowswithSpecificValue () For i = Selection.Rows.Count to 1 Step -1 If Cells (i, 2) .Value = "Printer" Then Cells (i, 2) .EntireRow.Delete End If Next i End Sub
Výše uvedený kód nejprve spočítá celkový počet řádků ve výběru. Tím zajistíte, že se smyčka spustí pouze mnohokrát. Poté pomocí smyčky „Pro další“ projde všechny buňky ve sloupci 2.
Příkaz IF THEN ELSE se pak používá ke kontrole hodnoty v každé buňce ve sloupci 2. A v případě, že hodnota/text odpovídá zadanému textu (což je v tomto případě „Tiskárna“).
V tomto příkladu jsem zkontroloval, zda text odpovídá konkrétnímu řetězci, nebo ne. Můžete to také provést pomocí hodnot. Můžete například odstranit všechny řádky, kde je hodnota prodeje menší než 1 000 nebo větší než 1 000.
Poznámka: Zde je důležité si uvědomit, že smyčka běží od Výběr. Řádky. Počítat do 1 aby se ujistil, že když je řádek odstraněn, nemá to vliv na řádky nad ním.
Jak používat tento kód VBA
Nyní vám ukážu, jak pomocí všech kódů uvedených v tomto kurzu odstranit celý řádek.
Tyto kódy musíte zkopírovat a vložit do modulu v editoru Excel VB. Jakmile budete mít tyto kódy zkopírované, můžete poté spustit kódy makra.
Níže jsou uvedeny kroky ke zkopírování a vložení těchto kódů VBA do modulu:
- Podržte klávesu ALT a stiskněte klávesu F11 (nebo na Macu funkce + Option + F11). Tím se otevře editor VB
- V editoru VB budete mít průzkumníka projektu vlevo. Pokud to nevidíte, přejděte na možnost Zobrazit a poté klikněte na Průzkumník projektů.
- Klikněte pravým tlačítkem na libovolný objekt v Průzkumníku projektů (u sešitu, ve kterém chcete spustit kód).
- Přejděte na Vložit a poté klikněte na Modul. Tím se vloží nový modul pro sešit
- Zkopírujte a vložte výše uvedené kódy do modulu.
A pro spuštění těchto kódů můžete umístit kurzor kamkoli do kódu (který chcete spustit) a stisknout klávesu F5 (nebo kliknout na zelený trojúhelník na panelu nástrojů VBA).
Také jsem napsal podrobný návod na různé způsoby spouštění kódů maker VBA v aplikaci Excel.
V případě, že potřebujete některý z těchto kódů používat poměrně často, můžete také zvážit jejich přidání do osobního sešitu maker a poté do QAT. Tímto způsobem vám bude kód k dispozici v jakémkoli vašem sešitu jediným kliknutím.Toto bylo několik kódů VBA, které můžete použít k odstranění celých řádků v aplikaci Excel (v různých scénářích). Stejnou logiku lze použít také v případě, že chcete místo řádků odstranit sloupce (s odpovídající úpravou v příkladech kódu).
Doufám, že jste našli tento návod užitečný!