ユーザー定義関数で最終セルの行数取得

マクロ講座47回 
ユーザー定義関数で最終セルの行数取得

ユーザー定義関数 Excel 2013 マクロ講座

Excel?最終セルが何行目かを表示するユーザー定義関数をつくる

現在作成している表がいったい何行あるのか、知りたい時があります。

作成している表の最後に飛ぶには、Ctrl+ ↓(下矢印 キー )で移動します。

何もないところで、Ctrl+ ↓(下矢印 キー )を押すと、最終行に移動します。
最終行
最初から、何も入力されていない列でCtrl+ ↓(下矢印 キー )を押せば、一発で最終行に移動します。
さて、わざわざ移動せずに、セルに最終行は何行目と表示したい場合にはどうしたらよいでしょう。

最終行を表示する関数はないので、ユーザー関数を作成しましょう。

最終行が何行かをセルに表示したい

VBEを起動して、新しいモジュールを作成します。
VBEのメニューバーより、挿入をクリックして、標準モジュールをクリックします。
標準モジュールを挿入
関数の定義
最終行を取得する関数を最終行と定義します。
引数につかう列名を列と定義します。
コードを直接次のように入力します。
Function 最終行(列 As String)
最終行 = Cells(1048576, 列).End(xlUp).Row
End Function
ユーザー定義関数コード
Excelの行数ですが、Excel 2003までは「1~65,535」、Excel 2007以降は「1~1,048,576」です。
Excel 2003でこのユーザー定義関数を使う場合は、コードを次のように変更します。
Function 最終行(列 As String)
最終行 = Cells(65535, 列).End(xlUp).Row
End Function
Endプロパティを使って、ワークシートの一番下の行から、上検索して最終行を探しています。
もちろん上から下におりることも可能で、End(xlDown)とすればいいわけです。 ただし、表がどこから始まっているのかわからないので、一番確実な下から最終行を探しているのです。

ユーザー定義関数を使う

最終行を取得したいセルに
=最終行("B")
と入力します。
Bは、データの入力されている列名です。
最終行を取得するユーザー定義関数
すると、図のように最終行を取得して、47と表示しました。
最終行を取得するユーザー定義関数2
今回は、わかりやすくするために、関数名や引数を日本語にしていますが、普段使う時は、関数名をlastrow、列をaのように定義した方が使いやすいです。
Function lastrow(a As String)
lastrow = Cells(1048576, a).End(xlUp).Row
End Function