Questo tutorial dimostrerà diversi modi per cancellare righe e colonne in Excel usando VBA.
Delete Entire Row or Column
Per cancellare un’intera riga in VBA usa questa linea di codice:
Rows(1).Delete
Nota che usiamo il metodo Delete per cancellare una riga.
Invece di fare riferimento all’oggetto Rows, puoi fare riferimento alle righe in base al loro oggetto Range con EntireRow:
Range("a1").EntireRow.Delete
Similmente per cancellare un’intera colonna, usa queste righe di codice:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Eliminare più righe o colonne
Utilizzando la stessa logica, puoi anche eliminare più righe in una volta:
Rows("1:3").Delete
o colonne:
Columns("A:C").Delete
Nota che qui facciamo riferimento ai numeri specifici di riga e colonna / lettere circondate da virgolette.
Ovviamente, puoi anche fare riferimento all’intera riga di un intervallo:
Range("a1:a10").EntireRow.Delete
Nota: Gli esempi qui sotto dimostrano solo la cancellazione delle righe, tuttavia come puoi vedere sopra, la sintassi è praticamente identica per cancellare le colonne.
Cancellare righe vuote / vuote
Questo esempio cancellerà una riga se l’intera riga è vuota:
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
Fa uso della funzione del foglio di lavoro Excel: COUNTA.
Delete Row if Cell is Blank
Questo eliminerà una riga se una specifica colonna in quella riga è vuota (in questo caso la colonna B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Delete Row Based on Cell Value
Questo farà un ciclo attraverso un intervallo, e cancellerà le righe se un certo valore di cella in quella riga dice “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
Altri esempi di cancellazione di righe e colonne
Eliminare le righe duplicate
Questo codice cancellerà tutte le righe duplicate in un intervallo:
Range("b2:c100").RemoveDuplicates Columns:=2
Nota che abbiamo impostato Colonne:=2. Questo dice a VBA di controllare entrambe le prime due colonne di dati quando considera se le righe sono duplicate. Un duplicato viene trovato solo quando entrambe le colonne hanno valori duplicati.
Se l’avessimo impostato a 1, solo la prima riga sarebbe stata controllata per i valori duplicati.
Cancella righe della tabella
Questo codice cancellerà la seconda riga in una tabella facendo riferimento a ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Eliminare le righe filtrate
Per eliminare solo le righe che sono visibili dopo il filtraggio:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Eliminare le righe nell’intervallo
Questo codice eliminerà tutte le righe nell’intervallo:
Range("a1:a10").EntireRow.Delete
Elimina le righe selezionate
Questo codice eliminerà tutte le righe selezionate:
Selection.EntireRow.Delete
Elimina l’ultima riga
Questo eliminerà l’ultima riga usata nella colonna B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Cambiando 2 con 1, puoi eliminare l’ultima riga usata nella colonna A, ecc.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Cancellare colonne per numero
Per cancellare una colonna in base al suo numero, usa un codice come questo:
Columns (2).Delete