Acest tutorial va demonstra diferite moduri de a șterge rânduri și coloane în Excel folosind VBA.
Delete Entire Row or Column
Pentru a șterge un rând întreg în VBA folosiți această linie de cod:
Rows(1).Delete
Observați că folosim metoda Delete pentru a șterge un rând.
În loc să faceți referire la obiectul Rows, puteți face referire la rânduri pe baza obiectului Range cu EntireRow:
Range("a1").EntireRow.Delete
În mod similar, pentru a șterge o coloană întreagă, utilizați aceste linii de cod:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Delete Multiple Rows or Columns
Utilizând aceeași logică, puteți, de asemenea, șterge mai multe rânduri deodată:
Rows("1:3").Delete
sau coloane:
Columns("A:C").Delete
Observați că aici facem referire la numerele / literele specifice ale rândurilor și coloanelor înconjurate de ghilimele.
Desigur, puteți, de asemenea, să faceți referire la EntireRow al unui interval:
Range("a1:a10").EntireRow.Delete
Nota: Exemplele de mai jos demonstrează doar ștergerea rândurilor, totuși, după cum puteți vedea mai sus, sintaxa este practic identică pentru ștergerea coloanelor.
Delete Blank / Empty Rows
Acest exemplu va șterge un rând dacă întregul rând este gol:
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
Se utilizează funcția Excel worksheet: COUNTA.
Delete Row if Cell is Blank
Acest exemplu va șterge un rând dacă o anumită coloană din acel rând este goală (în acest caz, coloana B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Delete Row Based on Cell Value
Acest exemplu va parcurge în buclă un interval și va șterge rândurile dacă o anumită valoare a celulei din acel rând spune „delete”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Mai multe exemple de ștergere a rândurilor și coloanelor
Delete Duplicate Rows
Acest cod va șterge toate rândurile duplicate dintr-un interval:
Range("b2:c100").RemoveDuplicates Columns:=2
Observați că am setat Columns:=2. Acest lucru îi spune lui VBA să verifice atât primele două coloane de date atunci când analizează dacă rândurile sunt duplicate. Un duplicat este găsit doar atunci când ambele coloane au valori duplicate.
Dacă am fi setat acest lucru la 1, doar primul rând ar fi fost verificat pentru valori duplicate.
Delete Table Rows
Acest cod va șterge al doilea rând dintr-un tabel prin referire la ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Delete Filtered Rows
Pentru a șterge numai rândurile care sunt vizibile după filtrare:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Delete Rows in Range
Acest cod va șterge toate rândurile din interval:
Range("a1:a10").EntireRow.Delete
Delete Selected Rows
Acest cod va șterge toate rândurile selectate:
Selection.EntireRow.Delete
Delete Last Row
Acest cod va șterge ultimul rând folosit în coloana B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Schimbând 2 în 1, puteți șterge ultimul rând folosit în coloana A, etc.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Delete Columns by Number
Pentru a șterge o coloană în funcție de numărul ei, folosiți un cod ca acesta:
Columns (2).Delete
.