Scopri il trucco per trovare l'ultima riga non vuota in Excel con VBA

Semplifica le tue macro con questo codice essenziale!

La tua SCUOLA DI EXCEL

Centinaia di Trucchi e Suggerimenti per le tue necessità quotidiane

Il tuo Corso di Excel VBA. Le prime 4 lezioni GRATIS

LINK UTILI

ExcelMinds

Non lasciare che le nostre mail finiscano nella cartella dello SPAM
Aggiungi l’indirizzo del mittente ai tuoi contatti

CITAZIONE DELLA SETTIMANA

L'automazione applicata a un'operazione efficiente ne amplificherà l'efficienza. L'automazione applicata a un'operazione inefficiente ne amplificherà l'inefficienza.

Bill Gates

CONTENUTI AREA PREMIUM

Attualmente l’AREA PREMIUM include i seguenti contenuti:

  • 168 Tips and Tricks

  • 91 Formule avanzate spiegate passo-passo

  • 12 Templates pronti all’uso

  • 651 Esempi di Codice VBA e macro su casi reali

  • 34 Brevi Tutorial VBA

Come trovare l'ultima riga non vuota in VBA per Excel

Quando si lavora con grandi fogli di calcolo, è fondamentale sapere come identificare l'ultima riga non vuota in un foglio. Questo è utile, ad esempio, per aggiungere nuovi dati senza sovrascrivere quelli esistenti o per iterare solo le celle effettivamente utilizzate.

In VBA, esistono diversi metodi per trovare l'ultima riga non vuota. Vediamoli insieme con un esempio pratico!

Metodo 1: Usare xlDown

Questo metodo si basa sulla simulazione del comando Ctrl + Freccia giù. Quando si utilizza il metodo xlDown, VBA parte dalla cella specificata (in questo caso Cells(1, 1)) e scende fino alla prima cella vuota o all'ultima riga contenente dati nella stessa colonna.

Ecco il codice:

Sub TrovaUltimaRiga_xlDown()
    Dim ws As Worksheet
    Dim UltimaRiga As Long

    ' Assegna il foglio di lavoro
    Set ws = ThisWorkbook.Sheets("Foglio1")

    ' Trova l'ultima riga
    UltimaRiga = ws.Cells(1, 1).End(xlDown).Row

    ' Mostra il risultato
    MsgBox "L'ultima riga non vuota è: " & UltimaRiga
End Sub

Come funziona:

  1. Cells(1, 1) indica la cella A1 come punto di partenza.

  2. End(xlDown) simula l'azione di premere Ctrl + Freccia giù, trovando la prima cella non vuota seguente o l'ultima della colonna.

  3. La proprietà .Row restituisce il numero di riga della cella trovata.

Nota: Questo metodo funziona bene se i dati nella colonna sono continui, ma potrebbe fallire in presenza di celle vuote all'interno dell'intervallo. Ad esempio, se hai un intervallo come A1:A10 con dati, ma A5 è vuota, il metodo si fermerà su A4 e non su A10.

CONTINUA »

Excel VBA Masterclass

TRASFORMA EXCEL in uno strumento POTENTISSIMO (con VBA)!

Stanco di attività ripetitive in Excel? Excel VBA Masterclass è la soluzione definitiva per automatizzare i tuoi task e creare strumenti professionali su misura. Impara VBA con un percorso completo, pratico e al tuo ritmo.

Benefici:

  •  Automatizza Excel: Risparmia ore di lavoro.

  •  Crea strumenti personalizzati: Soluzioni su misura per le tue esigenze.

  •  Masterclass Completa: 52 dispense, progetti pratici, test e attestato finale.

Metodo 2: Usare xlUp partendo dall'ultima riga disponibile

Per evitare problemi con celle vuote, un approccio più robusto è partire dall'ultima riga del foglio e risalire. Questo approccio utilizza il metodo End(xlUp), che simula il comando Ctrl + Freccia su.

Ecco il codice:

Sub TrovaUltimaRiga_xlUp()
    Dim ws As Worksheet
    Dim UltimaRiga As Long

    ' Assegna il foglio di lavoro
    Set ws = ThisWorkbook.Sheets("Foglio1")

    ' Trova l'ultima riga
    UltimaRiga = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Mostra il risultato
    MsgBox "L'ultima riga non vuota è: " & UltimaRiga
End Sub

Come funziona:

  1. La funzione ws.Rows.Count restituisce il numero totale di righe nel foglio, che varia a seconda della versione di Excel (ad esempio, 1.048.576 righe in Excel moderno).

  2. Cells(ws.Rows.Count, 1) si posiziona sull'ultima cella della prima colonna.

  3. End(xlUp) risale fino alla prima cella non vuota, simulando il comando Ctrl + Freccia su.

  4. La proprietà .Row restituisce il numero della riga individuata.

Vantaggi: Questo metodo è particolarmente utile in scenari con dati discontinui, dove alcune celle all'interno della colonna potrebbero essere vuote. Rispetto al metodo xlDown, consente di trovare sempre la riga più bassa contenente dati, indipendentemente dalla presenza di celle vuote sopra.

Esempio pratico: Immagina una colonna A con dati fino alla riga 100, ma con righe vuote tra 50 e 75. Questo metodo individuerà correttamente la riga 100 come ultima riga contenente valori.

Metodo 3: Usare UsedRange

Un approccio alternativo è utilizzare la proprietà UsedRange, che identifica tutte le celle utilizzate nel foglio, indipendentemente dal fatto che contengano dati o meno. Questa proprietà può essere utile per ottenere una panoramica rapida dell'intervallo di lavoro.

Ecco il codice:

Sub TrovaUltimaRiga_UsedRange()
    Dim ws As Worksheet
    Dim UltimaRiga As Long

    ' Assegna il foglio di lavoro
    Set ws = ThisWorkbook.Sheets("Foglio1")

    ' Trova l'ultima riga
    UltimaRiga = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row

    ' Mostra il risultato
    MsgBox "L'ultima riga non vuota è: " & UltimaRiga
End Sub

Come funziona:

  1. La proprietà UsedRange identifica l'intero intervallo di celle che Excel considera "utilizzato" nel foglio.

  2. Rows(ws.UsedRange.Rows.Count) ottiene l'ultima riga dell'intervallo usato.

  3. .Row restituisce il numero della riga corrispondente.

Vantaggi:

  • Permette di considerare velocemente l'intero intervallo di lavoro senza specificare colonne o celle iniziali.

  • Ideale per fogli di lavoro semplici o quando non ci sono celle formattate inutilmente.

Limiti:

  • UsedRange può includere celle che non contengono dati ma sono state precedentemente formattate o modificate, restituendo quindi una riga maggiore rispetto a quella realmente necessaria.

  • Non è sempre affidabile per intervalli disordinati o con dati sparsi.

Esempio pratico: Immagina di avere un foglio in cui hai cancellato dei dati dalle ultime righe. Anche se le righe appaiono vuote, Excel potrebbe considerarle ancora "usate" a causa della formattazione, portando UsedRange a includerle comunque.

Conclusione

Ora hai tre metodi per trovare l'ultima riga non vuota in Excel con VBA! Ognuno di essi ha vantaggi e limiti specifici, quindi sperimenta per capire quale si adatta meglio alle tue esigenze e al tuo flusso di lavoro.

  • Usa xlDown per scenari semplici con dati continui.

  • Opta per xlUp se ti serve un metodo robusto contro celle vuote.

  • Scegli UsedRange per un controllo rapido sull'intero foglio di lavoro.

Questi strumenti ti consentiranno di ottimizzare il tuo codice VBA, risparmiando tempo e migliorando l'affidabilità delle tue macro.

Alla prossima settimana,

Simone (aka Somebooks)
Excel Academy

Informazioni sull'iscrizione alla newsletter: la newsletter di Excel Academy verrà recapitata solo a chi si è iscritto. Se ti è stata inoltrata e in futuro vuoi avere la tua copia, ti invitiamo a visitare questa pagina ed iscriverti.

Se desideri condividere questa newsletter con altri:

  1. Inoltra questa newsletter via e-mail, ma prima elimina il link per la cancellazione in fondo, in modo da non essere accidentalmente cancellato

  2. Chiedi al tuo amico/collega di visitare Excel Academy 

  3. Inserisci un link al sito di Excel Academy nella newsletter aziendale o nel tuo sito web.