Come eliminare l'intera riga in Excel utilizzando VBA (esempi)

L'aggiunta e l'eliminazione di righe fa parte delle attività comuni quotidiane quando si lavora con Excel.

Sebbene tu possa farlo facilmente dal foglio di lavoro stesso, a volte potresti voler utilizzare il percorso VBA per eliminare le righe in Excel. Questi potrebbero essere l'eliminazione di una riga specifica, più righe nella selezione, l'eliminazione di righe alternative o quelle che contengono un valore specifico.

In questo tutorial, ti mostrerò come eliminare le righe in Excel utilizzando VBA (scenari multipli).

Quindi iniziamo!

Elimina un'intera riga usando VBA

Per eliminare un'intera riga in Excel utilizzando VBA, è necessario utilizzare il metodo EntireRow.Delete.

Ad esempio, se desideri eliminare l'intera prima riga in un foglio di lavoro, puoi utilizzare il codice seguente:

Sub DeleteEntireRow() Rows(1).EntireRow.Delete End Sub

Il codice precedente specifica prima la riga che deve essere eliminata (operazione che viene eseguita specificando il numero tra parentesi) e quindi utilizza il metodo EntireRow.Delete per eliminarla.

Puoi anche eliminare più righe specificando queste righe nel codice.

Ad esempio, il codice seguente eliminerà la riga numero 1, 5 e 9 nel foglio di lavoro:

Sub DeleteEntireRow() Rows(9).EntireRow.Delete Rows(5).EntireRow.Delete Rows(1).EntireRow.Delete End Sub

Il codice sopra utilizza la stessa logica, in cui specifica i numeri di riga ed Excel eliminerà queste righe una per una.

IMPORTANTE: quando elimini righe con qualcosa di simile al codice sopra, ricorda di iniziare a eliminare dal basso e poi salire. Ad esempio, nel caso in cui inizi dall'alto ed elimini prima la riga 1, tutte le righe sottostanti verrebbero spostate di una riga in alto e la numerazione sarebbe disattivata (poiché la riga 5 diventerebbe riga 4 e così via)

Elimina tutte le righe nella selezione

Nel caso in cui desideri eliminare tutte le righe in un intervallo selezionato di celle, puoi utilizzare il codice macro VBA di seguito:

Sub DeleteEntireRow() Selection.EntireRow.Delete End Sub

Il codice precedente si applica al metodo EntireRow.Delete all'intera selezione.

Elimina righe alternative (o Elimina ogni terza/quarta/ennesima riga)

A volte, potresti ottenere un dump di dati in cui ogni seconda riga (o terza, quarta o ennesima riga) è inutile e deve essere eliminata.

Lavoravo 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 attraverserà tutte le righe nella selezione ed eliminerà ogni seconda riga:

Sub DeleteAlternateRows() RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.Delete Next i End Sub

Lascia che ti spieghi come funziona questo codice VBA.

Per prima cosa, ho usato una variabile RConte per ottenere il numero totale di righe nella selezione.

Quindi ho usato un ciclo For Next per eseguirlo tante volte quante sono le righe. Ad esempio, se ci sono 12 righe, questo ciclo verrà eseguito da 12 a 1 (ovvero 12 volte). È importante eseguirlo dall'ultima riga della selezione alla prima poiché non vogliamo che i numeri di riga cambino quando una riga viene eliminata.

Inoltre, viene utilizzato il passaggio -2 poiché è necessario eliminare ogni altra riga (dal basso verso l'alto). Nel caso in cui desideri eliminare ogni terza riga, puoi utilizzare -3.

All'interno del ciclo VBA, ho utilizzato il metodo Selection.Rows(i).EntireRow.Delete per eliminare ogni riga alternativa.

Elimina 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 set di dati selezionato ed eliminerà l'intera riga.

Sub DeleteBlankRows() Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

Il codice sopra usa la proprietà SpecialCells per selezionare ed eliminare tutte le celle vuote. Questo è lo stesso metodo che ci consente anche di utilizzare la finestra di dialogo "Vai a speciale" per selezionare tutte le celle vuote.

Una volta identificate queste celle vuote utilizzando SpecialCell, queste vengono quindi eliminate utilizzando il metodo EntireRow.Delete.

Note: Questo metodo seleziona le celle vuote e non controlla se l'intera riga è vuota o meno. Quindi, se una cella è vuota in una riga, ciò cancellerebbe comunque l'intera riga.

Elimina righe con una parola/valore specifico

Puoi anche utilizzare un semplice codice VBA per passare attraverso ogni cella nell'intervallo selezionato ed eliminare tutte le righe in cui una cella contiene un testo o un valore specifico.

Ad esempio, supponiamo di avere un set di dati e di voler eliminare tutte le celle che hanno il testo Stampante nella colonna 2 della selezione.

Di seguito è riportato il codice che lo farà:

Sub DeleteRowswithSpecificValue() For i = Selection.Rows.Count To 1 Step -1 If Cells(i, 2).Value = "Printer" Then Cells(i, 2).EntireRow.Delete End If Next i End Sub

Il codice precedente conta prima il numero totale di righe nella selezione. Ciò assicurerà che il ciclo venga eseguito solo queste volte. Quindi utilizza il "ciclo For Next" per passare attraverso tutte le celle nella colonna 2.

L'istruzione IF THEN ELSE viene quindi utilizzata per controllare il valore in ogni cella nella colonna 2. E nel caso in cui il valore/testo corrisponda al testo specificato (che è "Stampante" in questo esempio).

In questo esempio, ho verificato se il testo corrisponde o meno a una stringa specifica. Puoi farlo anche con i valori. Ad esempio, puoi eliminare tutte le righe in cui il valore della vendita è inferiore a 1000 o superiore a 1000.

Nota: una cosa importante da notare qui è che il ciclo va da Selezione.Righe.Conteggio fino a 1 per assicurarti che quando una riga viene eliminata, non influisca sulle righe sopra di essa.

Come utilizzare questo codice VBA

Ora lascia che ti mostri come utilizzare tutti i codici menzionati in questo tutorial per eliminare l'intera riga.

Devi 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:

  1. Tieni premuto il tasto ALT e premi il tasto F11 (o Funzione + Opzione + F11 in Mac). Questo aprirà l'editor VB
  2. Nell'editor VB, avrai l'esploratore del progetto a sinistra. Se non lo vedi, vai all'opzione Visualizza e quindi fai clic su Esplora progetti.
  3. Fare clic con il pulsante destro del mouse su qualsiasi oggetto in Esplora progetti (per la cartella di lavoro in cui si desidera eseguire il codice).
  4. Vai su Inserisci e quindi fai clic su Modulo. Questo inserirà un nuovo modulo per la cartella di lavoro
  5. Copia e incolla i codici sopra nel modulo.

E per eseguire questi codici, puoi posizionare il cursore ovunque nel codice (che vuoi eseguire) e premere il tasto F5 (o fare clic sul triangolo verde nella barra degli strumenti VBA).

Ho anche scritto un tutorial dettagliato su diversi modi per eseguire codici macro VBA in Excel.

Nel caso in cui sia necessario utilizzare uno di questi codici abbastanza spesso, puoi anche considerare di aggiungerli alla cartella di lavoro macro personale e quindi al QAT. In questo modo, il codice sarà disponibile in qualsiasi cartella di lavoro con un solo clic.

Quindi questi erano alcuni codici VBA che puoi usare per eliminare intere righe in Excel (in diversi scenari). La stessa logica può essere applicata anche nel caso in cui si desideri eliminare colonne anziché righe (con la relativa rettifica negli esempi di codice).

Spero che tu abbia trovato utile questo tutorial!

wave wave wave wave wave