なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

数式/関数:最終行の行番を取得する

最下行の値や最右列の値を取得したい時。

VBAなら「Cells(Rows.Count,1).End(XlUp).Row」でいいわけだけど、数式だと若干面倒。昔からある方法だと 近似値検索の仕様を逆手に取って

=AGGREGATE(14,6,MATCH({1E15,"ーー"},A:A),1)

とする方法もあるにはあるけど、これを使うと説明を求められた時に面倒なことになる。かといって列参照で配列計算なんて入れたら確実に重くなる。下はお勧めしない方法。

=XMATCH("*?",A:A&"",2,-1)

スピルに対応しているバージョンなら、ここは素直に FILTER関数を使うのがいいかと思う。

=MAX(FILTER(ROW(A:A),A:A<>""))

条件をあれこれ足すと重くなるんで、あれこれいらない処理は入れないように。

そもそもでいうと、ワークシート関数は最終行を取得してから計算する仕様のものが多いので、下手に範囲を可変にしようとして計算を増やすとかえって重くなる可能性が高い。

先にテーブル書式を入れておくとか、FILTER関数で必要なデータを抽出するとかしたほうが格段に計算の無駄は減るので、留意されたい。

因みに「最終行の値」が欲しい場合は、

=TAKE(FILTER(A:A,A:A<>""),-1)

対象が数値でも文字列でもこれでいい。