条件に一致する最終行の値を関数で抽出する数式の説明2

本記事はアフィリエイト広告を含みます

このページは「条件が合うもののうち最終行の値を抽出する方法」を解説している4ページ目です。

 

引き続き数式の意味を解説していきます。

5.「LARGE( )」の部分

 次は、ここまでの結果を踏まえて「LARGE( )」の部分です。

 

LARGE関数は、「〇番目に大きな数値を取り出せる」関数で、「〇番目」を指定しているのが「COUNTIF($D$3:$D$12,"A")」の部分です。

 

COUNTIF関数は「条件に合うセルの数をカウントできる」関数で、ここでは「D列がAのセルをカウント」させています。

 

つまり、前のページの項目3で説明した、「($D$3:$D$12="A")*1」と同じ条件ですね。

 

ここでもう一度一覧表を見てください。

条件に一致する最終行の値をエクセル関数で抽出

 

表のように、社員Aが行った出張は全部で4回。つまり欲しいのは4番目の出張の情報です。

 

つまり「条件に合うセルの数=条件に合う最終行の順番(〇番目)」なのです。

 

そしてLARGE関数で参照しているのは下の枠内のような、配列に格納された値です。

条件に一致する最終行の値をエクセル関数で抽出

 

この枠内で4番目に大きい値は、セルH11の「0.0909091」です。

 

つまりLARGE( )の計算結果は、「0.0909091」となるのです。

6.「MATCH( )」の部分

 では次にMATCH( )の部分です。

条件に一致する最終行の値をエクセル関数で抽出

この内、青下線の部分は先ほど「0.0909091」と述べました。

 

つまり、実質的には「MATCH(0.0909091,1/ROW(B3:B12),0)」となります。

 

そしてMATCH関数は、「指定した検査範囲(この計算式では「1/ROW(B3:B12)」を指す)に対して、検査値(この計算式では「0.0909091」)がある順位を返す」関数です。

 

まず、検査範囲の部分(「1/ROW(B3:B12)」)は次のように計算されます。

条件に一致する最終行の値をエクセル関数で抽出

 

これに対して検査値は「0.0909091」なので、検査範囲の「9番目」となります。

 

つまり、MATCH( )の部分の計算結果は、「9」となるのです。

7.「INDEX( )」の部分

 その次に「INDEX( )」の部分です。

条件に一致する最終行の値をエクセル関数で抽出

 

この内、青下線部分は「9」と分かりました。

 

つまり、実質的には「INDEX($A$3:$E$12,9,COLUMN(B1)」となります。

 

まず、INDEX関数は「指定の配列(この計算式では「$A$3:$E$12」を指す)に対して、指定した行番号(計算の結果「9」)、列番号(この計算式では「COLUMN(B1)」を指す)にある値を返す」関数です(INDEX関数+MATCH関数の基本を知りたい方はコチラ)。

 

そして、COLUMN関数は「指定したセルの列番号を返す(例えば「C1」の場合には3列目(A,B,C)を指定しているので「3」)」関数です(COLUMN関数の基本を知りたい方はコチラ)。

 

つまり「COLUMN(B1)」は「2」となるので、計算式は「INDEX($A$3:$E$12,9,2)」となります。

 

そして「$A$3:$E$12」において行番号9、列番号2は、「セルB11」なので、INDEX以下の計算結果は「×▲講習」となるのです。

条件に一致する最終行の値をエクセル関数で抽出

8.まとめ

 以上、2ページに渡って計算式を説明しました。

 

まとめると、一番理解するのに難しいのはLARGE( )の所です。

 

配列数式が理解できているか?にも繋がりますが、何度か使っているとどうしてこうなるのかが分かってきますので、根気よく使ってみましょう。

 

参考になれば幸いです。

 

  • 条件に合う最終行抽出 各ページへのリンクはこちら
Top