Excelで指定した列の最後の行を取得するには、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).
End Function
|
他にも2つの数式があり、数値か文字列かに応じて、指定された行で最後に使用されたセルを取得します。
計算式です。vb
ビジュアルベーシック
1
2
|
=IFERROR(MATCH(E1+99,A:
=IFERROR(MATCH(“zzz”,A:A),0)
|
最初のものは最後に使用された数字の行を取得し、2番目のものは最後に使用された非数字の行を返しています。
計算式です。vb
ビジュアルベーシック
1
|
=MAX(IFERROR(MATCH(E1+99,A:IFERROR(MATCH(“zzz”,A:A),0))
|
しかし、小さな問題があります。最後のセルがエラーの場合、MAX()式は最後のセルではなく、そのセルを返します。
従って、最後の「もの」に対して常に機能する4つの究極の数式は次のとおりです。
行/列を取得するには:
A列の最終行
LastRow.vb
ビジュアルベーシック
1
|
=IFERROR(LOOKUP(2,1/(not(isblank(a:A)),ROW(A:A)),0)
|
最初の行の最後のカラム
LastColumn.vb
ビジュアルベーシック
1
|
=IFERROR(LOOKUP(2,1/(not(isblank(1:1)),COLUMN(1:1)),0)
|
値を取得するには
A列の最終行の値
LastUsedRow.vb
ビジュアルベーシック
1
|
=LOOKUP(2,1/(not(isblank(a:A)),A:A)
|
最初の行の最後のカラム値
LastColumnValue.vb
ビジュアルベーシック
1
|
=LOOKUP(2,1/(not(isblank(1:1))),1:1)
|
GitHubの最後のアレコレ