Uzyskanie ostatniego wiersza danej kolumny w Excelu można łatwo zrobić za pomocą funkcji zdefiniowanej przez użytkownika w VBA:
Visual Basic
1
2
3
4
5
|
Funkcja 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
|
Istnieją dwie inne formuły, które uzyskałyby ostatnio używaną komórkę w danym wierszu, w zależności od tego, czy jest to komórka numeryczna czy łańcuchowa:
Visual Basic
1
2
|
=IFERROR(MATCH(E1+99,A:A),0)
=IFERROR(MATCH(„zzz”, A:A),0)
|
Pierwszy z nich pobiera ostatnio używany wiersz numeryczny, a drugi zwraca ostatnio używany wiersz nienumeryczny. Dla ostatnio użytego wiersza numerycznego/nienumerycznego można użyć unii tych:
Visual Basic
1
|
=MAX(IFERROR(MATCH(E1+99,A:A),0),IFERROR(MATCH(„zzz”,A:A),0))
|
Jest jednak mały problem – gdy ostatnia komórka jest błędem, formuła MAX() zwraca nie ostatnią komórkę. W poniższym przykładzie zwraca 6, a nie 7 :
Więc, cztery ostateczne formuły, które zawsze działają dla ostatnich „rzeczy” są następujące:
Aby uzyskać wiersze/kolumny:
Ostatni wiersz kolumny A
Visual Basic
1
|
=IFERROR(LOOKUP(2,1/(NOT(ISBLANK(A:A)),ROW(A:A)),0)
|
Ostatnia kolumna pierwszego wiersza
Visual Basic
1
|
=IFERROR(LOOKUP(2,1/(NOT(ISBLANK(1:1)),COLUMN(1:1)),0)
|
Aby uzyskać wartości
Wartość ostatniego wiersza kolumny A
Visual Basic
1
|
=LOOKUP(2,1/(NOT(ISBLANK(A:A)),A:A)
|
Wartość ostatniej kolumny pierwszego wiersza
Visual Basic
1
|
=LOOKUP(2,1/(NOT(ISBLANK(1:1))),1:1)
|
GitHub ostatnie rzeczy