- 公開日:
エクセルで条件に合うものをすべて抽出する関数
エクセルを使ってデータを整理する際、特定の条件に合うデータの抽出は非常に重要です。
しかし、手作業で条件に合うデータをひとつひとつ探すのは非効率的で時間もかかってしまいます。
この記事では、エクセルで条件に合うものをすべて抽出するための便利な関数について詳しく解説しています。
エクセルで条件に合うものをすべて抽出する
複数の関数を組み合わせて条件に合うものをすべて抽出する
複数の関数を組み合わせてエクセルで条件に合うものをすべて抽出する方法は、以下のとおりです。

今回は、上記の表「業務名(A列)」の「交流会」の項目のみを抽出する場合を例にご説明します。
まず、条件に合う項目を抽出するために、以下の手順で作業用セルを追加します。
①抽出したい項目名(例:交流会)を任意のセル(例:A16)に入力します。
②表の右横などに「該当」「連番」の列の項目を追加します。

「該当」のセル(例:E3)に「=IF($A$16=A3,"〇","")」と入力してEnterを押します。
「業務名」の項目の中で「交流会」に一致する場合は「〇」、そうでない場合は空白という意味になります。
このとき、抽出する項目のセルは「$A$16」のように$をつけて絶対参照にすると、オートフィル機能を使えるため便利です。

①IF関数を入力したセル(例:E3)を選択します。
②セルの右下にカーソルを合わせて「+」マークを表示させ、下方向へドラッグします。

オートフィルで「該当」項目にまとめてIF関数を適用させることができました。

「連番」のセル(例:F3)に「=IF(E3="","",COUNTIF(E3:E13,"〇"))」と入力してEnterを押します。
「該当」の項目の中で「〇」に一致する場合は連番を付けるという意味になります。

①IF関数を入力したセル(例:F3)を選択します。
②セルの右下にカーソルを合わせて「+」マークを表示させ、下方向へドラッグします。

オートフィルで「連番」項目にまとめてIF関数を適用させることができました。

抽出結果を表示させる場所の右列などに番号を入力していきます。
抽出したい項目が多い場合などは、オートフィル操作で番号を入力していきます。

抽出したい項目名の右横のセル(例:B16)に「=IF($E16>MAX($F$3:$F$13),"",INDEX($A$3:$D$13,MATCH($E16,$F$3:$F$13,0),MATCH(B$15,$A$2:$D$2,0)))」と入力しEnterを押します。
MAX関数で数式を入力した行の連番が、取り出し元(例:F3:F13)で算出した連番の最大値(例:4)より大きい場合に何も表示しないようにします。
取り出し先の連番(例:E16:E20)と項目名の見出しを使用して、取り出し元からデータを特定しています。
MATCH関数で列位置と行位置を固定し、列位置と行位置を固定してオートフィルを適用できるようにします。

①関数を入力したセル(例:B16)を選択します。
②セルの右下にカーソルを合わせて「+」マークを表示させ、下方向へドラッグします。

そのままオートフィルを適用した一番下のセルの右下にカーソルを合わせ、「+」マークを表示させて右方向へドラッグします。

オートフィルでまとめて関数を適用させることができました。

必要に応じて、作業用セルを非表示にします。
①作業用セルがある列(例:E/F列)をドラッグして右クリックし、②「非表示」を選択します。

作業用セルを非表示することができました。
VLOOKUP関数で条件に合うものをすべて抽出する
VLOOKUP関数を使うと、検索値に一致した場合に指定した列の値を返してくれます。しかし、あくまで返してくれる値は1つです。
VLOOKUP関数で複数の値を抽出するには、COUNTIF関数と組み合わせることで可能になります。

抽出元、抽出先それぞれの表に「連番」の列(例:A列、G列)を追加します。

抽出元の連番のセル(例:A3)に「=IF(D3=$I$1,COUNTIF($D$3:D3,D3),0)」と入力し、Enterを押します。
COUNTIF関数を使って指定した部署名(例:I1セル)と一致した場合のみ連番が振られるようにします。
オートフィル機能を使用するため、範囲指定で最初の部分(例:$D$3)だけを絶対参照にします。

①関数を入力したセル(例:A3)を選択します。
②セルの右下にカーソルを合わせて「+」マークを表示させ、下方向へドラッグします。

オートフィルで抽出元の「連番」列にまとめて関数を適用させることができました。
抽出先の「連番」に順番に番号を入力します。

抽出した結果を表示させたいセル(例:H5)に「=IFERROR(VLOOKUP(G5,$A$3:$E$13,5,FALSE),"")」と入力し、Enterを押します。
連番を検索値に設定し、5列目に該当する「社員名」の項目を抽出するため、列番号には「5」を入力します。
IFERROR関数を使い、該当しない場合に表示されてしまう「#N/A」の表示が消し、より見やすい表にします。

①関数を入力したセル(例:H5)を選択します。
②セルの右下にカーソルを合わせて「+」マークを表示させ、下方向へドラッグします。

オートフィルで抽出先の「社員名」列にまとめて関数を適用させることができました。

必要に応じて、以下の操作で連番列を非表示にして表を見やすくします。
①連番の列(例:A列、G列)をCtrlを押しながら選択して右クリックし、②「非表示」を選択します。

連番の列を非表示にすることができました。
エクセルの抽出に関するさまざまな関数
以下の記事では、膨大なデータから欲しいデータを簡単に抽出できる関数をいくつかご紹介しています。
特定の文字列を検索して抽出する方法や、空白セル以外のデータを取り出す方法についてご紹介していますのでご参考にしてください。
FILTER関数で条件に合うものをすべて抽出する
エクセルのフィルター機能と同じように、条件に該当するデータを抽出できるFILTER関数というものがあります。
FILTER関数を使えば、何百行とあるデータから簡単にデータを抽出することができます。
ただし、Excel 2021以降またはMicrosoft 365で使用可能です。Excel2019以前のバージョンでは使用できないため、ご注意ください。
以下の記事では、ExcelのFILTER関数の使い方についてご説明しています。