Excelでマクロを使わずに最終行・列を取得する。関数中級レベルVer(数式で強制空白対応)

広告

Excelで最終行を取得するには、ユニーク列をCOUNTA関数で決めてあげれば最終行を取得することができます。

しかし、こんな万能なCOUNTAも弱点があります。
計算式であえて空白にしている場所もカウントしてしまう。

こちらがその現象です。

本来7行目までしかデータがないので、5という数字が入るのですが、計算式が入っているため、カウントされています。(「D列の名前のところが空白だったら空白にする」という式が入っています。)

Countaは空白でないセルの個数を返す関数になるので実際計算式が入っているため計算するようになっています。

今回はこれを正しい値に計算する方法のご紹介です。
ちなみに今回の方法は行数を指定しなくてもできる方法になりますので、行数が全く分からなくても使える方法なので、万能ですよ。

この記事がおすすめな人は以下の方です。

  • Excelで最終行・列の数を知りたい
  • マクロは使いたくない(もしくは使えない)
  • 関数は調べてたら使い方がわかるレベル(中級)
yukimi
yukimi

難易度:4.0
Countifのワイルドカードを使って算出するので、ちょっと混乱するかも

今回使用するファイルはこちら

使用する式

使用する式はこちらです。

=COUNTA(C:C)-COUNTIF(C:C,”*”)

今回C列をベースに参照していますが、使用したい列に合わせて変更してください。
必ず、ユニーク列(IDやナンバーかつ数字形式)で使用してください。

これが以下のようになります。

なぜ=COUNTA(C:C)-COUNTIF(C:C,”*”)で求められるのか?

今回のセルは大きく4つのブロックに分けられます。

  • A:文字列のセル
  • B:数字のセル
  • C:数式(空白)のセル
  • D:データがない(空白)セル

COUNTAはA+B+Cのデータ個数を返します。
そのため、1+5+5=11となります。

一方、COUNTIF(C:C,”*”)は文字列をカウントします。
この場合、強制的に空白「””」を入れているので、A+Cのデータの個数を返します。
1+5=6となります。

※Countif(C:C、“*”)の赤文字部分ですが、ワイルドカードといってこの場合、セルの中が文字列だったらカウントするになります。
詳しくはこちら
使えない関数もありますが、Countifを使う際はとても重宝します。

今回知りたいのは、Bの数字のデータのみになるので、Countaで求めた式からCountifで文字が入っている部分を引いてあげれば(A+B+C)-(A+C)=B答えが出るという仕組みです。

まとめ

Excelでマクロを使わずに最終行・列を取得方法は、Counta関数で求めた数値から、Countifで文字列の個数を引いてあげる。
です。

この数式は、複数シートがあった場合にも対応できるので、とても重宝します。

ぜひ使ってみてください。

コメント