- 概要
- 基本の使い方(別表から抽出)
- 別表から一致行を抽出する基本パターン
- 複数条件で抽出(AND 条件)
- OR 条件で抽出
- 該当なしのときのメッセージ
- よくあるつまずきと対策
- 例題
- 問題1: Sheet2 の A2:D100 に売上表があります。Sheet1 の F2 に担当者名が入っています。担当者が F2 の行だけを Sheet1 の G2 に抽出する式を書いてください。
- 問題2: Sheet2 の売上表から、「担当者=F2 かつ 商品=G2」の行だけを抽出し、Sheet1 の H2 に表示してください。
- 問題3: Sheet2 の売上表から、「担当者が F2 または G2」の行だけを抽出し、該当がなければ「該当なし」と表示する式を I2 に書いてください。
- 問題4: Sheet2 の売上表で、金額が 10000 以上の行だけを抽出し、Sheet1 の J2 に表示してください。
- 問題5: Sheet2 の売上表から、「担当者=F2 かつ 金額が 10000 以上」の行だけを抽出し、Sheet1 の K2 に表示してください。
概要
「別シート(別表)にあるデータの中から、条件に一致する行だけを抽出したい」
そんなときに最強なのが FILTER 関数です。
FILTER は
“指定した範囲から、条件に合う行だけを丸ごと返す”
という関数で、VLOOKUP や INDEX+MATCH ではできなかった
「複数行の抽出」「複数条件の抽出」が一発でできます。
別表(別シート)でも、シート名を付けて範囲を指定するだけでOKです。
基本の使い方(別表から抽出)
書式
=FILTER(元データ範囲, 条件, [該当なしのとき])
別シートの範囲を参照するときは、
=FILTER(Sheet2!A2:D100, 条件)
のように シート名!範囲 を指定します。
別表から一致行を抽出する基本パターン
例:Sheet2 の売上表から「担当者=F2」の行だけ抽出
Sheet2 に次の表があるとします。
- A列:日付
- B列:担当者
- C列:商品
- D列:金額
Sheet1 の F2 に担当者名が入っているとき、
一致する行だけを Sheet1 の G2 に表示する式は:
=FILTER(Sheet2!A2:D100, Sheet2!B2:B100=F2)
意味をかみ砕くと:
- Sheet2!A2:D100 … 抽出したい元データ
- Sheet2!B2:B100=F2 … 「担当者列が F2 と一致する行だけ TRUE」
- TRUE の行だけが返される
これで、別表から一致行を丸ごと抽出できます。
複数条件で抽出(AND 条件)
例:担当者=F2 かつ 商品=G2 の行だけ抽出
=FILTER(Sheet2!A2:D100,
(Sheet2!B2:B100=F2) * (Sheet2!C2:C100=G2))
FILTER の条件は TRUE/FALSE の配列なので、
掛け算(*)で AND 条件を作れます。
OR 条件で抽出
例:担当者が F2 または G2 の行だけ抽出
=FILTER(Sheet2!A2:D100,
(Sheet2!B2:B100=F2) + (Sheet2!B2:B100=G2))
TRUE を 1、FALSE を 0 とみなすため、
足し算(+)で OR 条件が作れます。
該当なしのときのメッセージ
一致する行がないと #CALC! になるため、
第3引数でメッセージを指定します。
=FILTER(Sheet2!A2:D100,
Sheet2!B2:B100=F2,
"該当データなし")
よくあるつまずきと対策
条件範囲と元データ範囲の行数は必ず揃える
NG:
- 元データ:Sheet2!A2:D100
- 条件:Sheet2!B3:B100(開始行がズレている)
OK:
- 元データ:Sheet2!A2:D100
- 条件:Sheet2!B2:B100
別シート名にスペースがある場合は 'シート名'!A1 と書く
例:
='売上 表'!A2:D100
FILTER は複数行を返すので、結果が下方向に広がる
FILTER の結果は「スピル」するため、
結果を置くセルの下に空きスペースが必要です。
例題
問題1: Sheet2 の A2:D100 に売上表があります。Sheet1 の F2 に担当者名が入っています。担当者が F2 の行だけを Sheet1 の G2 に抽出する式を書いてください。
=FILTER(Sheet2!A2:D100, Sheet2!B2:B100=F2)
問題2: Sheet2 の売上表から、「担当者=F2 かつ 商品=G2」の行だけを抽出し、Sheet1 の H2 に表示してください。
=FILTER(Sheet2!A2:D100,
(Sheet2!B2:B100=F2) * (Sheet2!C2:C100=G2))
問題3: Sheet2 の売上表から、「担当者が F2 または G2」の行だけを抽出し、該当がなければ「該当なし」と表示する式を I2 に書いてください。
=FILTER(Sheet2!A2:D100,
(Sheet2!B2:B100=F2) + (Sheet2!B2:B100=G2),
"該当なし")
問題4: Sheet2 の売上表で、金額が 10000 以上の行だけを抽出し、Sheet1 の J2 に表示してください。
=FILTER(Sheet2!A2:D100, Sheet2!D2:D100>=10000)
問題5: Sheet2 の売上表から、「担当者=F2 かつ 金額が 10000 以上」の行だけを抽出し、Sheet1 の K2 に表示してください。
=FILTER(Sheet2!A2:D100,
(Sheet2!B2:B100=F2) * (Sheet2!D2:D100>=10000))
まとめ
別表(別シート)から一致行を抽出する FILTER のポイントは次の通りです。
=FILTER(別シート!範囲, 条件)の形で使う- AND 条件は
条件1 * 条件2 - OR 条件は
条件1 + 条件2 - 該当なしメッセージは第3引数
- 別シート名にスペースがある場合は
'シート名'!範囲
FILTER を使いこなせば、
「別表から条件に合う行だけ抽出する」という実務の定番作業が
驚くほどシンプルに、そして壊れにくく書けるようになります。
