今回は表の中にあるデータの一番下のデータを取得する方法です。
言葉で伝えるのが難しいのですが、つまりこういう事です。
空欄のデータ直前のデータを抜き出します。
なんだそんなことか~と思うような方法なので、ぜひ最後まで見てみてください。
難易度:
関数の組み合わせ技なので、難易度は少しだけ高めに設定しています。
表の中にある一番下のデータを抜き出す方法
使用する式は以下の通りです。
=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つです。
- 空白のセルを探す
- 空白の一つ上の行を参照する
- エラー処理(空白のデータがなかった時の対応)
ぜひ使ってみてください。
今回使用したファイルは以下のボタンからダウンロードできるようにしています。
コメント