Excelで表の中にある一番下のデータを取得する方法 〜空欄直前のデータを取得〜

広告

今回は表の中にあるデータの一番下のデータを取得する方法です。

言葉で伝えるのが難しいのですが、つまりこういう事です。

現象

空欄のデータ直前のデータを抜き出します。
なんだそんなことか~と思うような方法なので、ぜひ最後まで見てみてください。

この記事がおススメな人

  • テーブルの中にある一番下のデータを抜き出したい
  • IF関数を使うような煩雑な式にしないようにしたい
yukimi
yukimi

難易度:2.0
関数の組み合わせ技なので、難易度は少しだけ高めに設定しています。

表の中にある一番下のデータを抜き出す方法

使用する式は以下の通りです。

=INDEX(A4:I28,IFNA(MATCH(“”,E4:E28,0)-1,MAX(ROWS(E4:E28))),5)

お馴染みの技Index関数とMatch関数の組み合わせ技です。
複雑そうに見えますがポイントは3つです。

  • 空白のセルを探す
  • 空白の一つ上の行を参照する
  • エラー処理(空白のデータがなかった時の対応)

ここからはポイントを絞って解説していきます。

空白のセルを探す・空白の一つ上の行を参照する

今回、一番下にあるデータを特定するには空白行の有無が鍵になります。

空白行がポイント

空白セルの1行上=一番下にあるデータ
となりますので、空白のセルをまず特定します。

「空白セルの特定」と「空白の一つ上の行を参照」しているところが以下の箇所になります。

=INDEX(A4:I28,IFNA(MATCH(“”,E4:E28,0)-1,MAX(ROWS(E4:E28))),5)

MATCH関数は選択したセル範囲内にあるデータ(検査値)を上から数えヒット行数(位置)を返してくれる関数です
今回のケースでは空白は複数ありますが、先にヒットした行数を返してくれます。

エラー処理(空白のデータがなかった時の対応)

Match関数がエラーになる時があります。
それは表があり、一番下までデータが埋まっている状態の時です。
これは、空白のデータがないため#N/Aエラーが表示されます。

エラー処理をしているところが、この部分に当たります。

=INDEX(A4:I28,IFNA(MATCH(“”,E4:E28,0)-1,MAX(ROWS(E4:E28))),5)

IFNAエラーだった時の処理、すなわちデータが最後まであった場合の処理をここでしています。

=INDEX(A4:I28,IFNA(MATCH(“”,E4:E28,0)-1,MAX(ROWS(E4:E28))),5)

MAX関数とROWS関数の組み合わせもとても便利ですので覚えておくといいです。
一番下の行のデータを取得するのに、役立ちます。

ROWS関数はROW関数の配列バージョンです。
ROW関数は1つの値しか返さないのに対し、ROWS関数は今回の場合E4:E28となっているので、1,2,3,4,5,…25までの25個のデータを返します。

必要なのは一番下の行の数値なので、MAX関数で25という数字を出しています。
これで#N/Aエラーも回避できるようになりました。

まとめ

いかがでしたでしょうか。
求め方は他にもあるのですが、私はINDEXとMATCH関数で空白を基に計算しています。

ポイントのおさらいになりますが、以下の3つです。

  • 空白のセルを探す
  • 空白の一つ上の行を参照する
  • エラー処理(空白のデータがなかった時の対応)

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

今回使用したファイルは以下のボタンからダウンロードできるようにしています。

コメント