条件に一致する最終行の値を関数で抽出する数式の作り方
いよいよ数式の作り方ですが、まずは全体像を確認します。
ちょっと見づらいですが、セルB16には次のような計算式が入っています。
{=INDEX($A$3:$E$12,MATCH(LARGE(($D$3:$D$12="A")*1/ROW(B3:B12),COUNTIF($D$3:$D$12,"A")),1/ROW(B3:B12),0),COLUMN(B1))}
1.数式の作り方
ではいよいよ数式の作り方に入ります。ちなみにここでは「どうすればできるのか?」のみを説明し、「なぜできるのか?」は別のページで解説します。
では順に見てみましょう。
(1)「INDEX(」の所
例では「INDEX($A$3:$E$12,」となっていますが、このうち「$A$3:$E$12」は「一覧表の範囲」を指定しています。
ご覧のように、一覧のデータはセルA3~セルE12に入っています。
そのため「$A$3:$E$12」となるのです。
なお、「$(絶対参照)」は他のセルに計算式をコピーする時に役立ちますので、同じように付けてください。
(2)「MATCH(LARGE(」の所
例では「MATCH(LARGE(($D$3:$D$12="A")*1/ROW(B3:B12),」となっていますが、このうちまず「($D$3:$D$12="A")*1」は条件を指定する所です。
例は「社員A」のデータを抽出したいので、社員名のデータが入っている列「$D$3:$D$12」に対して条件「="A"」を指定しています。
これがもし「出張先が岩手県」という条件を指定したい場合には、「$C$3:$C$12="岩手県"」となります。
そしてその後の「*1」は、「指定する条件が一つの場合」にこのようになります。
もし条件が2つ以上の場合には、( )*( )のような形になり、例えば「社員A」と「岩手県」としたい場合には、「($D$3:$D$12="A")*($C$3:$C$12="岩手県")」となります。
その後の「ROW(B3:B12)」のうち、「B3:B12」は「この計算式で求める値がB列」であって、「一覧表のデータが3行目から12行目までだから」このようになっています。
ですので、計算式でA列の値を求める場合には「A3:A12」となります。
(3)「COUNTIF(」の所
例では「COUNTIF($D$3:$D$12,"A")),」となっていますが、ここでは「COUNTIF関数を使って『社員A』のデータがいつくあるか?」をカウントしています。
もし条件が2つ以上ある場合には、「COUNTIFS関数」を使って同じようにカウントしてください。
(4)「1/ROW(」の所
例では「1/ROW(B3:B12),0),」となっていますが、このうち「B3:B12」も前の「ROW」の所と同じで「この計算式で求める値がB列」であって、「一覧表のデータが3行目から12行目までだから」このようになっています。
(5)「COLUMN(」の所
例では「COLUMN(B1)」となっていますが、ここも「この計算式で求める値がB列」なのでこのような形になっており、例で「1」となっている行番号は「何番でもかないません」。
ただ後でみて分かり易いように、「1行目」とするとよいでしょう。
2.仕上げにやること
以上で計算式が出来上がりましたが、最後にやらなければならないことがあります。
それは「計算式を{ }が付く『配列数式』にすること」です。
そしてそのためには、計算式を入力し終わった後「Shift」キーと「Ctrl」キーを押しながら「Enter」キーを押す必要があります。
これで計算式の完成です。
{=INDEX($A$3:$E$12,MATCH(LARGE(($D$3:$D$12="A")*1/ROW(B3:B12),COUNTIF($D$3:$D$12,"A")),1/ROW(B3:B12),0),COLUMN(B1))}
3.まとめ
以上、計算式の作り方を解説しました。
ちなみに、一覧表を古いものから順に整列させれば、最終行は「一番最近のもの」となります。
「一番最近のデータをみたいなぁ」といった時にも使えます。
次のページは、計算式の解説をしています。
- 条件に合う最終行抽出 各ページへのリンクはこちら
- ◎具体例の確認(1/4ページ)
- ●計算式の作り方(2/4ページ)
- ◎計算式の解説(前編)(3/4ページ)
- ●計算式の解説(後編)(4/4ページ)