L’aggiunta e l’eliminazione di righe fa parte dei compiti comuni di tutti i giorni quando si lavora con Excel.
Mentre puoi farlo facilmente dal foglio di lavoro stesso, a volte potresti voler usare il percorso VBA per eliminare righe in Excel. Queste potrebbero essere l’eliminazione di una riga specifica, più righe nella selezione, l’eliminazione di righe alternative o quelle che hanno un valore specifico in esso.
In questo tutorial, vi mostrerò come eliminare le righe in Excel utilizzando VBA (scenari multipli).
Allora iniziamo!
Questo tutorial copre:
Cancellare un’intera riga usando VBA
Per cancellare un’intera riga in Excel usando VBA, devi usare il metodo EntireRow.Delete.
Per esempio, se vuoi cancellare l’intera prima riga di un foglio di lavoro, puoi usare il codice seguente:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
Il codice sopra specificato specifica prima la riga che deve essere cancellata (che viene fatta specificando il numero tra parentesi) e poi usa il metodo EntireRow.Delete per eliminarla.
È anche possibile eliminare più righe specificando queste righe nel codice.
Per esempio, il codice seguente eliminerà le righe numero 1, 5 e 9 nel foglio di lavoro:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
Il codice precedente usa la stessa logica, dove specifica i numeri di riga ed Excel eliminerà queste righe una per una.
Cancellare tutte le righe nella selezione
Nel caso vogliate cancellare tutte le righe in un intervallo selezionato di celle, potete usare il codice macro VBA qui sotto:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
Il codice precedente applica il metodo EntireRow.Delete all’intera selezione.
Elimina le righe alterne (o Elimina ogni terza/quarta/quinta riga)
A volte, si può ottenere un dump di dati dove ogni seconda riga (o terza, quarta o ennesima riga) è inutile e deve essere eliminata.
Ho lavorato con dati finanziari in cui ogni seconda riga era vuota e doveva essere cancellata.
Questo è il tipo di scenario in cui VBA brilla davvero.
Di seguito è riportato il codice VBA che passerà attraverso tutte le righe della selezione e cancellerà ogni seconda riga:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Lascia che ti spieghi come funziona questo codice VBA.
Prima di tutto, ho usato una variabile RCount per ottenere il numero totale di righe nella selezione.
Poi ho usato un ciclo For Next per eseguire questo tante volte quante sono le righe. Per esempio, se ci sono 12 righe, questo ciclo verrà eseguito da 12 a 1 (cioè, 12 volte). È importante eseguire questo ciclo dall’ultima riga della selezione alla prima, poiché non vogliamo che i numeri di riga cambino quando una riga viene cancellata.
Inoltre, il passo -2 viene utilizzato poiché abbiamo bisogno di cancellare ogni altra riga (dal basso verso l’alto). Nel caso tu voglia cancellare ogni terza riga, puoi usare -3.
Nel ciclo VBA, ho usato il metodo Selection.Rows(i).EntireRow.Delete per cancellare ogni riga alternativa.
Cancellare le righe vuote con VBA
Puoi anche usare il metodo EntireRow.Delete per eliminare tutte le righe vuote.
Di seguito è riportato il codice VBA che selezionerà le celle vuote nel dataset selezionato ed eliminerà l’intera riga.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
Il codice sopra riportato utilizza la proprietà SpecialCells per selezionare ed eliminare tutte le celle che sono vuote. Questo è lo stesso metodo che ci permette anche di usare la finestra di dialogo ‘Go To Special’ per selezionare tutte le celle vuote.
Una volta che queste celle vuote sono identificate usando SpecialCell, queste vengono poi eliminate usando il metodo EntireRow.Delete.
Elimina le righe con una parola/valore specifico
Puoi anche usare un semplice codice VBA per passare attraverso ogni cella nell’intervallo selezionato ed eliminare tutte le righe dove una cella contiene un testo o un valore specifico.
Per esempio, supponiamo di avere un set di dati e di voler cancellare tutte le celle che hanno il testo Stampante nella colonna 2 della selezione.
Di seguito il codice che farà questo:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
Il codice qui sopra conta prima il numero totale di righe nella selezione. Questo farà in modo che il ciclo venga eseguito solo queste volte. Poi usa il ‘For Next loop’ per passare attraverso tutte le celle della colonna 2.
L’istruzione IF THEN ELSE viene poi usata per controllare il valore in ogni cella della colonna 2. E nel caso in cui il valore/testo corrisponda al testo specificato (che è ‘Printer’ in questo esempio).
In questo esempio, ho controllato se il testo corrisponde a una stringa specifica o meno. Potete farlo anche con i valori. Per esempio, potete cancellare tutte le righe in cui il valore di vendita è inferiore a 1000 o superiore a 1000.
Nota: Una cosa importante da notare qui è che il ciclo viene eseguito da Selection.Rows.Count To 1 per assicurarsi che quando una riga viene cancellata, non abbia effetto sulle righe precedenti.
Come usare questo codice VBA
Ora vi mostro come usare tutti i codici menzionati in questo tutorial per cancellare l’intera riga.
È necessario copiare e incollare questi codici in un modulo in Excel VB Editor. Una volta copiati questi codici, è possibile eseguire i codici macro.
Di seguito sono riportati i passaggi per copiare e incollare questi codici VBA in un modulo:
- Tenere premuto il tasto ALT e premere il tasto F11 (o Funzione + Opzione + F11 in Mac). Questo aprirà l’editor VB
- Nell’editor VB, avrete l’esploratore del progetto sulla sinistra. Se non lo vedi, vai all’opzione Visualizza e poi clicca su Esplora Progetto.
- Clicca con il tasto destro del mouse su qualsiasi oggetto in Esplora Progetto (per la cartella di lavoro in cui vuoi eseguire il codice).
- Vai su Inserisci e poi clicca su Modulo. Questo inserirà un nuovo modulo per la cartella di lavoro
- Copia e incolla i codici di cui sopra nel modulo.
E per eseguire questi codici, è possibile posizionare il cursore in qualsiasi punto del codice (che si desidera eseguire) e premere il tasto F5 (o cliccare sul triangolo verde nella barra degli strumenti VBA).
Ho anche scritto un tutorial dettagliato sui diversi modi di eseguire i codici macro VBA in Excel.
Quindi questi erano alcuni codici VBA che puoi usare per cancellare intere righe in Excel (in diversi scenari). La stessa logica può essere applicata anche nel caso in cui vogliate cancellare colonne invece di righe (con la corrispondente modifica negli esempi di codice).
Spero che abbiate trovato utile questo tutorial!
Vi potrebbero piacere anche i seguenti tutorial Excel:
- Excel VBA Autofilter: Una guida completa con esempi
- Eliminare le righe in base al valore di una cella (o condizione) in Excel
- Inserire una riga vuota dopo ogni riga in Excel (o ogni ennesima riga)
- Come nascondere rapidamente le COLONNE in Excel