複数条件に合致する行へ番号を振って順番に抽出する方法【COUNTIFS×VLOOKUP応用】
Excelで 複数条件に合致するデータをすべて取り出したい 場面は多いですよね。
✅ 佐藤さんの購入履歴を全て抽出したい
✅ 2024年10月の商品Aの販売を一覧にしたい
✅ フィルターせずに別シートに自動反映したい
そんな時に使えるのが COUNTIFS + VLOOKUP を使った方法です!
▼前提データ例
| A列 | B列 | C列 |
|---|---|---|
| 顧客 | 商品 | 金額 |
| 佐藤 | りんご | 100 |
| 佐藤 | みかん | 150 |
| 鈴木 | りんご | 120 |
| 佐藤 | りんご | 200 |
ここから
-
顧客 = 佐藤
-
商品 = りんご
に一致するものを新しい表に順番に取り出します。
✅手順①:抽出条件欄を作成
今回は顧客の条件をH2、商品条件をH3に入力します。
※2つ以上の作成も可能です。
✅手順②:検索番号(出現順)を作成
VLOOKUPは表の一番左のデータしか検索できないため、一番左の欄に抽出用の検索番号を作成します。
検索番号はCOUNTIFS関数を使用します。
👉 同じ条件の行に 1,2,3… と番号が振られます。
COUNTIFS($〇$△:〇△は便利な使用方法です。COUNTIFSはそもそも指定の範囲内で特定の数字や文字がいくつあるかを算出する関数ですが、前半のみに
$をつけることで1行(列)目から該当行(列)目までに出た検索内容の個数を算出することができます。番号の重複が気になる場合は、IF関数を使用すると検索条件に合致する場合のみ数字を表示することもできます。
例)
=IF(COUNTIFS(B2:B2,$H$2,C2:C2,$H$3)>0,COUNTIFS($B$2:B2,$H$2,$C$2:C2,$H$3),"")=IF(COUNTIFS($B$2:B2,$H$2,$C$2:C2,$H$3)✅手順③:検索番号をもとに結果を抽出する
抽出結果の1行目J3には1を記入し以降2,3,4と抽出したい件数だけ番号を振る。
顧客条件の抽出欄K3には =IFERROR(VLOOKUP(J3,A2:D19,2,FALSE),"")
商品条件の抽出欄L3には =IFERROR(VLOOKUP(J3,A2:D19,3,FALSE),"")
金額条件の抽出欄M3には =IFERROR(VLOOKUP(J3,A2:D19,3,FALSE),"")
と記入して、以降下の行にコピーペーストします。
▼仕組み解説
| 操作 | 役割 |
|---|---|
| H列 | 検索条件を作成 |
| A列 | 検索条件をもとにCOUNTIFS関数で同条件の出現順を採番 |
| 抽出側 | 出現番号で1件ずつ検索 |
つまり👇
✅まとめ
| やりたいこと | 使う関数 |
|---|---|
| 複数条件判定 | 結合キー |
| 繰返し出現に番号振り | COUNTIFS |
| 複数件抽出 | VLOOKUP / INDEX×MATCH |
