当サイトはアフィリエイト広告を利用しています。
膨大なデータの中から条件に合うデータを抽出するのはたいへんですが、Excelならどれだけたくさんデータがあっても、一瞬で目的のデータを抽出できます。
そこで今回は、Excelで条件に合うデータを抽出する方法をご紹介します。
Excelで条件に合うデータを抽出する方法
Excelで条件に合うデータを抽出する方法には、以下のようなものがあります。
- VLOOKUP関数を使う
- HLOOKUP関数を使う
- XLOOKUP関数を使う
- INDEX関数を使う
- FILTER関数を使う
なお、XLOOKUP関数とFILTER関数はMicrosoft 365やOffice 2021以降でなければ使用できません。以下の記事にてMicrosoft 365やOffice 2021の購入ページをご紹介していますので、Office 2019以前のバージョンをお使いの方はチェックしてみてください。
方法1:VLOOKUP関数を使う
範囲の1列目で条件を検索したい場合は、VLOOKUP関数を使う方法がおすすめです。
VLOOKUP関数(ブイルックアップ関数)は、範囲の1列目で値を検索し、一致するセルと同じ行にある値を返す関数です。
VLOOKUP(検査値, 範囲, 列番号, [検索の型])
- 検査値(必須)
- 検索する値を指定する。
- 範囲(必須)
- 検索する値と取得したい値を含む範囲を指定する。
- 列番号(必須)
- 取得したい値が【範囲】の何列目にあるか指定する。
- 検索の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「TRUE」として処理される。
- TRUE:近似値で検索する。【範囲】の1列目を昇順に並べ替えておく必要がある。
- FALSE:完全一致で検索する。【範囲】の並べ替えは必要ない。
(例)A4~E9を対象に、A2の条件で検索し、一致する「名前」をB2に抽出する。
B2に=VLOOKUP(A2,A4:E9,2,FALSE)
と入力すると、条件に合うデータが抽出されます。

方法2:HLOOKUP関数を使う
範囲の1行目で条件を検索したい場合は、HLOOKUP関数を使う方法がおすすめです。
HLOOKUP関数(エイチルックアップ関数)は、範囲の1行目で値を検索し、一致するセルと同じ列にある値を返す関数です。
HLOOKUP(検査値, 範囲, 行番号, [検索の型])
- 検査値(必須)
- 検索する値を指定する。
- 範囲(必須)
- 検索する値と取得したい値を含む範囲を指定する。
- 行番号(必須)
- 取得したい値が【範囲】の何行目にあるか指定する。
- 検索の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「TRUE」として処理される。
- TRUE:近似値で検索する。【範囲】の1行目を昇順に並べ替えておく必要がある。
- FALSE:完全一致で検索する。【範囲】の並べ替えは必要ない。
(例)A4~F8を対象に、B1の条件で検索し、一致する「名前」をB2に抽出する。
B2に=HLOOKUP(B1,A4:F8,2,FALSE)
と入力すると、条件に合うデータが抽出されます。

方法3:XLOOKUP関数を使う
条件が入力された列より左の列、または条件が入力された行より上の行のデータを抽出したい場合は、XLOOKUP関数を使う方法がおすすめです。
XLOOKUP関数(エックスルックアップ関数)は、条件に一致する値を返す関数です。
XLOOKUP(検査値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
- 検査値(必須)
- 検索する値を指定する。
- 検索範囲(必須)
- 検索する値を含む範囲を指定する。範囲の高さは【戻り範囲】と同じにする。
- 戻り範囲(必須)
- 取得したい値を含む範囲を指定する。範囲の高さは【検索範囲】と同じにする。
- 見つからない場合(省略可)
- 【検索値】が見つからない場合に表示する値を指定する。
- 一致モード(省略可)
- 一致の種類を以下のいずれかで指定する。省略すると「0」として処理される。
- 0:完全一致で検索する。見つからない場合は、【見つからない場合】の値を返す。
- -1:完全一致で検索する。見つからない場合は、次に見つかった小さな値を返す。
- 1:完全一致で検索する。見つからない場合は、次に見つかった大きな値を返す。
- 2:「*」「?」「~」をワイルドカードとして使用できる。
- 検索モード(省略可)
- 検索の方向を以下のいずれかで指定する。省略すると「1」として処理される。
- 1:先頭から末尾に向かって検索する。
- -1:末尾から先頭に向かって検索する。
- 2:先頭から末尾に向かって高速で検索する。データを昇順に並べ替えておく必要がある。
- -2:末尾から先頭に向かって高速で検索する。データを降順に並べ替えておく必要がある。
(例)A4~E9を対象に、B2の条件で検索し、一致する「ID」をA2に抽出する。
A2に=XLOOKUP(B2,B4:B9,A4:A9,"")
と入力すると、条件に合うデータが抽出されます。

複数条件を指定したい場合は、第1引数同士や第2引数同士を「&」演算子でつなぎます。

方法4:INDEX関数を使う
列番号と行番号が交差する位置にあるデータを抽出したい場合は、INDEX関数を使う方法がおすすめです。
INDEX関数(インデックス関数)は、指定された行と列が交差する位置にあるセルの値を返す関数です。
INDEX(参照, 行番号, 列番号, [領域番号])
- 参照(必須)
- 取得したい値を含む範囲を指定する。複数の範囲を指定する場合は、(範囲1,範囲2,範囲3)のように全体を()で囲み、それぞれの範囲を「,」で区切る。
- 行番号(必須)
- 【参照】の何行目の値を取得したいか指定する。
- 列番号(必須)
- 【参照】の何列目の値を取得したいか指定する。
- 領域番号(省略可)
- 【参照】で複数の範囲を指定した場合、何番目の範囲で検索するか指定する。省略すると1番目の範囲が検索の対象となる。
(例)A4~E9を対象に、「田中」と「ID」が交差する位置にあるデータを抽出する。
A4~E9の範囲で「田中」は「5行目」に、「ID」は「2列目」にあるので、A2に=INDEX(A4:E9,5,2)
と入力すると、条件に合うデータが抽出されます。

ちなみに、MATCH関数を使えば行番号や列番号を自動で取得できます。
MATCH関数(マッチ関数)は、値と一致する位置が範囲の何行目または何列目にあるか返す関数です。
MATCH(検査値, 検査範囲, [照合の型])
- 検査値(必須)
- 検索する値を指定する。
- 検査範囲(必須)
- 検索する範囲を指定する。
- 照合の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「1」として処理される。
- 1:【検索値】以下の最大値で検索する。【検査範囲】を昇順に並べ替えておく必要がある。
- 0:【検索値】と完全一致で検索する。【検査範囲】の並べ替えは必要ない。
- -1:【検査値】以上の最小値で検索する。【検査範囲】を降順に並べ替えておく必要がある。
たとえば、「田中」がA4~A9の範囲のA8に、「ID」がA4~E9の範囲のB4にある場合、「田中」の行番号はMATCH(A8,A4:A9,0)
で、「ID」の列番号はMATCH(B4,A4:E4,0)
で取得できます。

方法5:FILTER関数を使う
条件に合うデータを行ごと抽出したい場合は、FILTER関数を使う方法がおすすめです。
FILTER関数(フィルター関数)は、条件に一致する行を抽出する関数です。
FILTER(範囲, 条件, [一致しない場合の値])
- 範囲(必須/)
- 検索する範囲を指定する。
- 条件(必須)
- 検索する条件を指定する。
- 一致しない場合の値(省略可)
- 一致する行がない場合に返す値を指定する。
(例)A4~E9を対象に、A2の条件で検索し、一致するデータをG4を起点に抽出する。
G4に=FILTER(A5:E9,C5:C9=A2,"")
と入力すると、条件に合うデータが抽出されます。

複数条件を指定したい場合は、第2引数の条件を()で囲み、さらに条件同士を乗算(掛け算)を行う算術演算子「*」でつなぎます。

Excelで条件に合うデータを別シートに抽出する方法
Excelで条件に合うデータを別シートに抽出するには、セル範囲の前に「抽出元シート名!」を追加します。


なお、抽出元シートの名前や抽出先シートの表示形式によっては、数式が正しく反映されません。その場合は以下の記事でご紹介している対処法を参考にしてみてください。
まとめ
今回は、Excelで条件に合うデータを抽出する方法をご紹介しました。
条件に合うデータを抽出できる関数のうち、おすすめはXLOOKUP関数やFILTER関数です。これらは引数の指定方法がわかりやすいですし、複数条件での検索も可能です。条件に合うデータを抽出したいときはぜひ活用してみてくださいね。