Tento tutoriál ukáže různé způsoby mazání řádků a sloupců v Excelu pomocí VBA.
Odstranění celého řádku nebo sloupce
Pro odstranění celého řádku ve VBA použijte tento řádek kódu:
Rows(1).Delete
Všimněte si, že pro odstranění řádku používáme metodu Delete.
Místo odkazování na objekt Rows se můžete na řádky odkazovat na základě jejich objektu Range pomocí EntireRow:
Range("a1").EntireRow.Delete
Podobně pro smazání celého sloupce použijte tyto řádky kódu:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Odstranění více řádků nebo sloupců
Pomocí stejné logiky můžete také odstranit více řádků najednou:
Rows("1:3").Delete
nebo sloupců:
Columns("A:C").Delete
Všimněte si, že zde odkazujeme na konkrétní čísla řádků a sloupců obklopená uvozovkami.
Můžete samozřejmě také odkazovat na celý řádek rozsahu:
Range("a1:a10").EntireRow.Delete
Poznámka: Níže uvedené příklady demonstrují pouze mazání řádků, nicméně jak vidíte výše, syntaxe je prakticky totožná pro mazání sloupců.
Odstranění prázdných / prázdných řádků
Tento příklad odstraní řádek, pokud je celý řádek prázdný:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Využívá funkci pracovního listu aplikace Excel:
Odstranit řádek, pokud je buňka prázdná
Tento příklad odstraní řádek, pokud je určitý sloupec v tomto řádku prázdný (v tomto případě sloupec B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Odstranit řádek na základě hodnoty buňky
Tento příklad projde rozsah a odstraní řádky, pokud určitá hodnota buňky v tomto řádku říká „odstranit“.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Další příklady mazání řádků a sloupců
Mazání duplicitních řádků
Tento kód odstraní všechny duplicitní řádky v rozsahu:
Range("b2:c100").RemoveDuplicates Columns:=2
Všimněte si, že jsme nastavili Sloupce:=2. To říká VBA, aby při zvažování, zda jsou řádky duplicitní, kontroloval oba první dva sloupce dat. Duplicita je nalezena pouze v případě, že oba sloupce mají duplicitní hodnoty.
Pokud bychom nastavili tuto hodnotu na 1, byl by na duplicitu kontrolován pouze první řádek.
Odstranit řádky tabulky
Tento kód odstraní druhý řádek v tabulce odkazem na ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Odstranit filtrované řádky
Pro odstranění pouze řádků, které jsou viditelné po filtrování:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Odstranit řádky v rozsahu
Tento kód odstraní všechny řádky v rozsahu:
Range("a1:a10").EntireRow.Delete
Odstranit vybrané řádky
Tento kód odstraní všechny vybrané řádky:
Selection.EntireRow.Delete
Odstranit poslední řádek
Tento kód odstraní poslední použitý řádek ve sloupci B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Změnou 2 na 1 můžete odstranit poslední použitý řádek ve sloupci A atd.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Odstranění sloupců podle čísla
Chcete-li odstranit sloupec podle jeho čísla, použijte tento kód:
Columns (2).Delete
.