Indicare l’ultima riga di una data colonna in Excel è facile con una funzione definita dall’utente in VBA:
lastRow.vb
Visual Basic
1
2
3
4
5
|
Function LastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = Worksheets(wsName)
LastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function
|
Ci sono altre due formule, che otterrebbero l’ultima cella usata in una data riga, a seconda che sia numerica o stringa:
Formule.vb
Visual Basic
1
2
|
=IFERROR(MATCH(E1+99,A:A),0)
=IFERROR(MATCH(“zzz”,A:A),0)
|
Il primo ottiene l’ultima riga numerica usata e il secondo restituisce l’ultima riga non numerica usata. Per l’ultima riga numerica/non numerica usata, si potrebbe usare un’unione di queste:
Formula.vb
Visual Basic
1
|
=MAX(IFERROR(MATCH(E1+99,A:A),0),IFERROR(MATCH(“zzz”,A:A),0))
|
C’è però un piccolo problema – quando l’ultima cella è un errore, la formula MAX() ritorna non l’ultima. Nell’esempio qui sotto restituisce 6 e non 7 :
Quindi, le quattro formule definitive, che funzionano sempre per le ultime “cose” sono le seguenti:
Per ottenere le righe/colonne:
L’ultima riga della colonna A
LastRow.vb
Visual Basic
1
|
=IFERROR(LOOKUP(2,1/(NOT(ISBLANK(A:A))),ROW(A:A)),0)
|
ultima colonna della prima riga
LastColumn.vb
Visual Basic
1
|
=IFERROR(LOOKUP(2,1/(NOT(ISBLANK(1:1))),COLONNA(1:1)),0)
|
Per ottenere i valori
Valore ultima riga della colonna A
LastUsedRow.vb
Visual Basic
1
|
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
|
Valore dell’ultima colonna della prima riga
LastColumnValue.vb
Visual Basic
1
|
=LOOKUP(2,1/(NOT(ISBLANK(1:1))),1:1)
|
GitHub ultime cose