データの入っている最終行を求めたい

マクロを使って最終行を求めるには,Endプロパティを使えば良いのですが,関数ではできないのでしょうか?
最終行を求める関数はありませんが,関数を組み合わせればできます。

例えば,下のようにデータが入力されている場合


枠は,10行目までありますが,データは8行目までしか入っていません。
また,後々,9行目にデータが入る可能性があったり,8行目のデータが削除される可能性があったり。。。
データの量に合わせて,最終行を求めるには,どうしたらよいのでしょう。


(1)作業列を使って求める方法
  完成した表は,下の図です。


考え方としては,まず,データが入っていたら作業列に行番号が返ってくるようにします。
次に,返ってきた行番号の中で最大値を求めます。

関数の入力は,
B2に,
=IF(A2<>"",ROW(),"")
と入力します。
これをB10までコピーします。
次に,C2に,
=MAX(B1:B10)
と入力すればOKです。


(2)配列数式を使って求める方法
 完成した表は,下の図です。


列を増やして表の変更をしたくない。
見栄え上,作業列は作りたくない。
そんな方もみえると思います。
こういう時は,配列数式を使います。

考え方は,(1)と同じです。
ただ,行番号を求めた結果を,丸ごとMAX関数に渡しています。


関数の入力は,
B2に,
=MAX(IF(A1:A10<>"",ROW(A1:A10),""))
と入力し,
Enterキーを押す代わりに,
Ctrl + Shift + Enter と3つのキーを同時に押す
ことが重要です。

ちゃんとできていれば,
{=MAX(IF(A1:A10<>"",ROW(A1:A10),""))}
と,数式の前後に { }が付いています。
※手入力では正しく計算ができません。


配列数式についての説明は,ここでは省略しています。
詳しく知りたい方は,WEBで検索するとたくさん解説が出てくるので,そこで勉強してみてください。