エクセルで特定の値と一致するデータを自動的に抽出できれば、手作業でのデータ検索に費やす時間を大幅に削減できます。
IF関数・VLOOKUP・FILTER関数など目的に合った方法を選ぶことで、効率的なデータ抽出が実現します。
本記事では、値が一致した場合にデータを抽出するための各種方法を、単一条件から複数条件対応まで詳しく解説いたします。
データ抽出の自動化を進めたい方に、特に役立つ内容をまとめています。
値が一致したら抽出する基本的な考え方
それではまず、値が一致した場合にデータを抽出するための基本的な考え方について解説していきます。
抽出の方法は「その場で表示を変える方法」と「別の場所に抽出結果を表示する方法」の2つに大別されます。
目的に応じてどちらのアプローチを選ぶかを最初に決めることが、効率的な設計の出発点です。
IF関数で一致した場合のみ値を表示する
最もシンプルな一致抽出の方法はIF関数を使う方法です。
「=IF(A1=”東京”,B1,””)」という数式で、A1が「東京」の場合はB1の値を表示し、そうでなければ空白を表示します。
IF関数を使った方法はその場で条件分岐した値を表示したい場合に最適で、一覧表での条件付き表示に広く使われます。
複数列の抽出にはIF関数を各列に設定することで対応でき、シンプルな条件ならIF関数だけで十分な場合も多いです。
VLOOKUPで一致するデータを別列から取得する
検索キーに一致する行の別列の値を取得したい場合はVLOOKUP関数が定番です。
「=VLOOKUP(E1,A:C,2,FALSE)」はE1の値をA列で検索し、一致した行のB列(2列目)の値を返します。
VLOOKUP関数は「一致する行の特定の列の値を取得する」という典型的な抽出処理に最適で、顧客コードから名前を取得するなどの場面で広く活用されます。
完全一致で検索する場合は第4引数をFALSEに指定することが必須で、TRUEにすると近似一致になって誤った値が返されることがあります。
INDEX+MATCHで柔軟な抽出を実現する
VLOOKUPより柔軟で高機能な抽出を実現するにはINDEX+MATCHの組み合わせが有効です。
「=INDEX(B:B,MATCH(E1,A:A,0))」はE1と一致する値をA列から検索し、その行のB列の値を返します。
VLOOKUPが左から右方向の検索しかできないのに対し、INDEX+MATCHは任意の方向の検索が可能で、検索列の左側にある値の取得にも対応できます。
大量データでの処理速度もVLOOKUPより高速な場合が多いため、高度な抽出処理にはINDEX+MATCHが推奨されます。
複数条件に一致するデータを抽出する方法
続いては、複数の条件を組み合わせて一致するデータを抽出する方法を確認していきます。
実務では単一条件だけでなく「AかつB」「AまたはB」といった複数条件での抽出が頻繁に求められます。
IFS関数・AND・OR関数を使った複数条件抽出
複数条件をAND(かつ)で組み合わせるには「=IF(AND(A1=”東京”,B1=”男性”),C1,””)」のようにIF関数とAND関数を組み合わせます。
OR(または)条件で抽出する場合は「=IF(OR(A1=”東京”,A1=”大阪”),B1,””)」のようにOR関数を使います。
AND・OR関数はIF関数の条件部分に組み込むことで複数条件の分岐を実現できます。
Excel 2019以降ではIFS関数を使うことで複数の条件を順番に評価して最初に一致した条件の値を返すこともできます。
XLOOKUP関数で複数条件の抽出を実現する
Excel 365・2021以降ではXLOOKUP関数が使用でき、VLOOKUPより柔軟な抽出が可能です。
「=XLOOKUP(E1&F1,A:A&B:B,C:C,”なし”)」のように検索値と検索範囲を「&」で連結することで複数列を同時に検索する疑似複数条件検索が実現できます。
XLOOKUPは列の方向制限がなくエラー処理も引数に含めるため、VLOOKUPより大幅にシンプルで強力な抽出関数として活用できます。
Excelのバージョンを確認した上で、使える環境ではぜひXLOOKUPに切り替えることをおすすめします。
FILTER関数で複数条件一致を一括抽出する
Excel 365・2021以降で使えるFILTER関数は、条件に一致する行を複数まとめて別の場所に抽出できる非常に強力な関数です。
「=FILTER(A1:C100,B1:B100=”東京”)」とすることでB列が「東京」の行全体をすべて抽出して表示できます。
FILTER関数はスピル機能で複数行の結果を自動展開するため、抽出件数が変動しても数式の変更なしに自動対応します。
複数条件のAND抽出は「=FILTER(A:C,(B:B=”東京”)*(C:C=”男性”))」、OR抽出は「=FILTER(A:C,(B:B=”東京”)+(B:B=”大阪”))」のように乗算・加算で表現します。
フィルター機能とPower Queryによる抽出の活用
続いては、オートフィルター機能とPower Queryを使った値一致抽出の方法を確認していきます。
関数を使わない方法としてフィルターやPower Queryも非常に有効な抽出手段です。
オートフィルターで素早く一致データを絞り込む
データ範囲を選択してCtrl+Shift+Lでオートフィルターを有効にし、抽出したい列のドロップダウンから条件を選択することで一致するデータを素早く絞り込めます。
テキストフィルターや数値フィルターを使えば「〇〇を含む」「〇〇以上」などの柔軟な条件での絞り込みも可能です。
フィルター結果を別シートにコピーしたい場合はAlt+;で可視セルのみを選択してからコピーすることで非表示行を含まないコピーができます。
複数列に条件を設定することで実質的な複数条件抽出も実現でき、操作も直感的でわかりやすい方法です。
詳細フィルターで条件をシートに定義して抽出する
詳細フィルター(「データ」→「詳細設定」)を使うと、シート上に定義した条件範囲に基づいて複雑な条件でデータを抽出し、別の場所に結果を出力することができます。
条件範囲に複数行で条件を記述することでOR条件、同じ行に横並びで記述することでAND条件を表現できます。
詳細フィルターは結果を別の場所に出力できるため元データを保持したまま抽出結果を得られる点が大きな特徴です。
FILTER関数が使えない旧バージョンのエクセルでも使用できるため、バージョンを問わず有効な抽出方法です。
Power QueryでのAdvancedデータ抽出
Power Queryを使うことで大量データからの複雑な条件抽出を直感的な操作で実現できます。
「データ」→「データの取得」からPower Queryエディターを開き、「行のフィルター」機能で条件を設定することで特定の値に一致する行を抽出できます。
Power Queryは一度設定した抽出ルールをデータ更新時に「更新」ボタン1つで再実行できるため、定期的なデータ抽出業務の自動化に最適です。
複数のテーブルを結合して条件抽出するなど、関数だけでは難しい高度な抽出処理もPower Queryなら直感的に実装できます。
まとめ
エクセルで値が一致したデータを抽出する方法はIF関数・VLOOKUP・INDEX+MATCH・FILTER関数・フィルター機能など多岐にわたります。
単純な一致表示にはIF関数・別列の値取得にはVLOOKUPまたはINDEX+MATCH・複数行の一括抽出にはFILTER関数が最適です。
XLOOKUP・FILTER関数はExcel 365・2021以降で使用可能で、旧バージョンではVLOOKUP・INDEX+MATCH・詳細フィルターで対応します。
用途とバージョンに応じた最適な抽出方法を選択することが、データ活用の効率を最大化する鍵となるでしょう。