Ten samouczek zademonstruje różne sposoby usuwania wierszy i kolumn w Excelu za pomocą VBA.
Usuwanie całego wiersza lub kolumny
Aby usunąć cały wiersz w VBA, użyj tej linii kodu:
Rows(1).Delete
Zauważ, że używamy metody Delete do usunięcia wiersza.
Zamiast odwoływać się do obiektu Rows, możesz odwoływać się do wierszy na podstawie ich obiektu Range za pomocą EntireRow:
Range("a1").EntireRow.Delete
Podobnie, aby usunąć całą kolumnę, użyj tych linii kodu:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Delete Multiple Rows or Columns
Używając tej samej logiki, możesz również usunąć wiele wierszy jednocześnie:
Rows("1:3").Delete
lub kolumn:
Columns("A:C").Delete
Zauważ, że odwołujemy się tutaj do konkretnych numerów / liter wierszy i kolumn otoczonych cudzysłowem.
Oczywiście, możesz również odwołać się do EntireRow zakresu:
Range("a1:a10").EntireRow.Delete
Uwaga: Poniższe przykłady demonstrują tylko usuwanie wierszy, jednak jak widać powyżej, składnia jest praktycznie identyczna do usuwania kolumn.
Usuwanie pustych/pustych wierszy
Ten przykład usunie wiersz, jeśli cały wiersz jest pusty:
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
Wykorzystuje on funkcję arkusza Excela: COUNTA.
Delete Row if Cell is Blank
To spowoduje usunięcie wiersza, jeśli określona kolumna w tym wierszu jest pusta (w tym przypadku kolumna B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Delete Row Based on Cell Value
To zapętli zakres i usunie wiersze, jeśli określona wartość komórki w tym wierszu mówi „usuń”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Więcej przykładów usuwania wierszy i kolumn
Usuń zduplikowane wiersze
Ten kod usunie wszystkie zduplikowane wiersze w zakresie:
Range("b2:c100").RemoveDuplicates Columns:=2
Zauważ, że ustawiliśmy Kolumny:=2. To mówi VBA, aby sprawdzić dwie pierwsze kolumny danych, gdy rozważamy, czy wiersze są duplikatami. Duplikat jest znajdowany tylko wtedy, gdy obie kolumny mają zduplikowane wartości.
Gdybyśmy ustawili to na 1, tylko pierwszy wiersz zostałby sprawdzony pod kątem zduplikowanych wartości.
Usuń wiersze tabeli
Ten kod usunie drugi wiersz w tabeli przez odwołanie się do ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Delete Filtered Rows
Aby usunąć tylko wiersze, które są widoczne po filtrowaniu:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Delete Rows in Range
Ten kod usunie wszystkie wiersze w zakresie:
Range("a1:a10").EntireRow.Delete
Delete Selected Rows
Ten kod usunie wszystkie wybrane wiersze:
Selection.EntireRow.Delete
Delete Last Row
To usunie ostatni używany wiersz w kolumnie B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Zamieniając 2 na 1, można usunąć ostatni używany wiersz w kolumnie A, itd.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Delete Columns by Number
Aby usunąć kolumnę według jej numeru, użyj kodu takiego jak ten:
Columns (2).Delete
.