当サイトはアフィリエイト広告を利用しています。
膨大なデータの中から複数条件に合うデータを抽出するのはたいへんですが、Excelなら標準機能や関数を使うことで簡単に抽出できます。
そこで今回は、Excelで複数条件に合うデータを抽出する方法をご紹介します。
Excelで複数条件に合うデータだけを表示する方法
元データの表示を複数条件に合うデータのみにしたい場合は、フィルター機能を使う方法があります。
フィルター機能を使って複数条件に合うデータだけを表示するには、まずデータ範囲のいずれかのセルをクリックし、「データ」タブ⇒「フィルター」をクリックします。ただし、データ範囲をテーブル化している場合、この作業は不要です。
すると、見出しセルの右下に「▼」ボタンが表示されます。
このボタンをクリックすると、データを絞り込むための条件を設定できます。たとえば、「100,000円以下のノートパソコン」で絞り込むには、まず「商品名」の「▼」ボタンをクリックして「ノートパソコン」にのみチェックを付け「OK」をクリックします。
続いて「単価」の「▼」ボタンをクリックして「数値フィルター」⇒「指定の値以下」をクリックし、「カスタムオートフィルター」が表示されたら上の入力ボックスに「100000」と入力して「OK」をクリックします。
これで「100,000円以下のノートパソコン」のデータのみが表示されます。
データの表示を元に戻したい場合は、データ範囲のいずれかのセルをクリックし、「データ」タブ⇒「クリア」をクリックします。
これでデータの表示が元に戻ります。
Excelで複数条件に合うデータを別シートに抽出する5つの方法
Excelで複数条件に合うデータを別シートに抽出する方法には、以下のようなものがあります。
- VLOOKUP関数を使う
- HLOOKUP関数を使う
- XLOOKUP関数を使う
- INDEX関数とMATCH関数を使う
- FILTER関数を使う
なお、XLOOKUP関数とFILTER関数はOffice 2021以降でなければ使用できません。現在の最新バージョンは「Office 2024」ですので、XLOOKUP関数やFILTER関数を使いたい場合はOffice 2024の購入を検討しましょう。
方法1:VLOOKUP関数を使う
行が見出しになっているデータの場合は、VLOOKUP関数を使う方法があります。
VLOOKUP関数(ブイルックアップ関数)は、範囲の1列目で値を検索し、一致するセルと同じ行にある値を返す関数です。
VLOOKUP(検査値, 範囲, 列番号, [検索の型])
- 検査値(必須)
- 検索する値を指定する。
- 範囲(必須)
- 検索する値と取得したい値を含む範囲を指定する。
- 列番号(必須)
- 取得したい値が【範囲】の何列目にあるか指定する。
- 検索の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「TRUE」として処理される。
- TRUE:近似値で検索する。【範囲】の1列目を昇順に並べ替えておく必要がある。
- FALSE:完全一致で検索する。【範囲】の並べ替えは必要ない。
たとえば元データシートの「D社のノートパソコン」の「単価」を抽出先シートに抽出するには、まず元データシートの「左端」に「条件となる値を結合した補助列」を追加します。
左端に補助列を追加すると、条件となる値が入力された列はB列とC列になるので、補助列の一番上のセルに=B2&C2
と入力し、最後の行まで数式をコピーします。
次に抽出先シートに条件となる値を入力します。
結果を表示するセルに以下のような数式を入力します。これで該当するデータが抽出されます。
=VLOOKUP(A2&B2,元データ!A1:D11,4,FALSE)
なお、該当するデータが複数ある場合は、上にあるデータが抽出されます。
また該当するデータがない場合は、#N/Aエラーになります。データがない場合に「該当なし」と表示したい場合は、以下のようにIFERROR関数と組み合わせた数式に変更しましょう。
=IFERROR(VLOOKUP(A2&B2,元データ!A1:D11,4,FALSE),"該当なし")
IFERROR関数(イフエラー関数)は、数式がエラーでなければ数式の結果を返し、エラーであれば指定された値を返す関数です。
IFERROR(値, エラーの場合の値)
- 値(必須)
- エラーかどうかをチェックする数式を指定する。
- エラーの場合の値(必須)
- 【値】がエラーの場合に返す値を指定する。
方法2:HLOOKUP関数を使う
列が見出しになっているデータの場合は、HLOOKUP関数を使う方法があります。
HLOOKUP関数(エイチルックアップ関数)は、範囲の1行目で値を検索し、一致するセルと同じ列にある値を返す関数です。
HLOOKUP(検査値, 範囲, 行番号, [検索の型])
- 検査値(必須)
- 検索する値を指定する。
- 範囲(必須)
- 検索する値と取得したい値を含む範囲を指定する。
- 行番号(必須)
- 取得したい値が【範囲】の何行目にあるか指定する。
- 検索の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「TRUE」として処理される。
- TRUE:近似値で検索する。【範囲】の1行目を昇順に並べ替えておく必要がある。
- FALSE:完全一致で検索する。【範囲】の並べ替えは必要ない。
行列が入れ替わるだけで基本的なやり方はVLOOKUP関数のときと同じです。元データシートの「最上部」に「条件となる値を結合した補助行」を追加⇒抽出先シートに条件となる値を入力し、結果を表示するセルに以下のような数式を入力すると、該当するデータが抽出されます。
=HLOOKUP(A2&B2,元データ!A1:K4,4,FALSE)
なお、該当するデータが複数ある場合は、左にあるデータが抽出されます。
方法3:XLOOKUP関数を使う
補助列や補助行を作成したくない場合は、XLOOKUP関数を使いましょう。XLOOKUP関数にはIFERROR関数と組み合わせなくてもエラー時の表示を指定できるというメリットもあります。
XLOOKUP関数(エックスルックアップ関数)は、条件に一致する値を返す関数です。
XLOOKUP(検査値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
- 検査値(必須)
- 検索する値を指定する。
- 検索範囲(必須)
- 検索する値を含む範囲を指定する。範囲の高さは【戻り範囲】と同じにする。
- 戻り範囲(必須)
- 取得したい値を含む範囲を指定する。範囲の高さは【検索範囲】と同じにする。
- 見つからない場合(省略可)
- 【検索値】が見つからない場合に表示する値を指定する。
- 一致モード(省略可)
- 一致の種類を以下のいずれかで指定する。省略すると「0」として処理される。
- 0:完全一致で検索する。見つからない場合は、【見つからない場合】の値を返す。
- -1:完全一致で検索する。見つからない場合は、次に見つかった小さな値を返す。
- 1:完全一致で検索する。見つからない場合は、次に見つかった大きな値を返す。
- 2:「*」「?」「~」をワイルドカードとして使用できる。
- 検索モード(省略可)
- 検索の方向を以下のいずれかで指定する。省略すると「1」として処理される。
- 1:先頭から末尾に向かって検索する。
- -1:末尾から先頭に向かって検索する。
- 2:先頭から末尾に向かって高速で検索する。データを昇順に並べ替えておく必要がある。
- -2:末尾から先頭に向かって高速で検索する。データを降順に並べ替えておく必要がある。
XLOOKUP関数を使って複数条件に合うデータを別シートに抽出するには、VLOOKUP関数やHLOOKUP関数と同様に抽出先のシートに条件となる値を入力し、結果を表示するセルに以下のような数式を入力します。これで該当するデータが抽出されます。
=XLOOKUP(A2&B2,元データ!A2:A11&元データ!B2:B11,元データ!C2:C11,"該当なし")
なお、該当するデータが複数ある場合は、上または左にあるデータが抽出されます。
方法4:INDEX関数とMATCH関数を使う
行と列が交差するデータを抽出したい場合は、INDEX関数とMATCH関数を使う方法があります。
INDEX関数(インデックス関数)は、指定された行と列が交差する位置にあるセルの値を返す関数です。
INDEX(参照, 行番号, 列番号, [領域番号])
- 参照(必須)
- 取得したい値を含む範囲を指定する。複数の範囲を指定する場合は、(範囲1,範囲2,範囲3)のように全体を()で囲み、それぞれの範囲を「,」で区切る。
- 行番号(必須)
- 【参照】の何行目の値を取得したいか指定する。
- 列番号(必須)
- 【参照】の何列目の値を取得したいか指定する。
- 領域番号(省略可)
- 【参照】で複数の範囲を指定した場合、何番目の範囲で検索するか指定する。省略すると1番目の範囲が検索の対象となる。
MATCH関数(マッチ関数)は、値と一致する位置が範囲の何行目または何列目にあるか返す関数です。
MATCH(検査値, 検査範囲, [照合の型])
- 検査値(必須)
- 検索する値を指定する。
- 検査範囲(必須)
- 検索する範囲を指定する。
- 照合の型(省略可)
- 検索方法を以下のいずれかで指定する。省略すると「1」として処理される。
- 1:【検索値】以下の最大値で検索する。【検査範囲】を昇順に並べ替えておく必要がある。
- 0:【検索値】と完全一致で検索する。【検査範囲】の並べ替えは必要ない。
- -1:【検査値】以上の最小値で検索する。【検査範囲】を降順に並べ替えておく必要がある。
INDEX関数とMATCH関数を使って複数条件に合うデータを別シートに抽出するには、抽出先のシートに条件となる値を入力し、結果を表示するセルに以下のような数式を入力します。この場合、「B社の住所」が抽出されます。
=INDEX(元データ!A1:D5,MATCH(A2,元データ!A1:A5,0),MATCH(B2,元データ!A1:D1,0))
方法5:FILTER関数を使う
複数条件に合うデータをすべて抽出したい場合は、FILTER関数を使う方法があります。
FILTER関数(フィルター関数)は、条件に一致する行を抽出する関数です。
FILTER(範囲, 条件, [一致しない場合の値])
- 範囲(必須/)
- 検索する範囲を指定する。
- 条件(必須)
- 検索する条件を指定する。
- 一致しない場合の値(省略可)
- 一致する行がない場合に返す値を指定する。
FILTER関数を使って複数条件に合うデータを別シートに抽出するには、抽出先のシートに条件となる値を入力し、結果を表示するセルに以下のような数式を入力します。この場合、「30,000円以上のタブレット」のデータが抽出されます。
=FILTER(元データ!A2:C11,(元データ!B2:B11=A2)*(元データ!C2:C11>=B2))
Excelで2列で重複する値を別シートに抽出する方法
2列で重複する値を別シートに抽出したい場合は、IF関数とCOUNTIF関数を使う方法があります。
IF関数(イフ関数)は、条件を満たす場合と満たさない場合とで処理を変える関数です。
IF(論理式, 真の場合, 偽の場合)
- 論理式(必須)
- 条件を指定する。
- 真の場合(必須)
- 条件を満たす場合の処理を指定する。
- 偽の場合(必須)
- 条件を満たさない場合の処理を指定する。
COUNTIF関数(カウントイフ関数)とは、単一の条件に一致するセルの個数を求める関数です。
COUNTIF(範囲, 検索条件)
- 範囲(必須)
- 検索する範囲を指定する。
- 検索条件(必須)
- 検索する条件を指定する。
IF関数とCOUNTIF関数を使って2列で重複する値を別シートに抽出するには、抽出先のシートの結果を表示するセルに以下のような数式を入力し、この数式を元データの数だけコピーします。
=IF(COUNTIF(元データ!A2:B11,元データ!A2)>=2,元データ!A2,"")
該当するデータが抽出されたら、フィルター機能で「空白セル」のチェックを外し、空白セル以外で絞り込みます。
これで2列で重複する値が空白セルなしで表示されます。
まとめ
今回は、Excelで複数条件に合うデータを抽出する方法をご紹介しました。
元データの表示を複数条件に合うデータのみにしたい場合は、フィルター機能を使いましょう。該当するデータを別シートに抽出したい場合は、XLOOKUP関数やFILTER関数を使う方法が簡単でおすすめです。2列で重複する値を別シートに抽出したい場合は、IF関数とCOUNTIF関数を使うと良いですよ。
Udemyでは、買い切りの動画講座で好きな分野について自分のペースで学ぶことができます。
パソコンだけでなくスマホにも対応しているので、移動時間や休憩時間にスマホで学習することも可能です。
30日間の返金保証付きなので、初めてでも安心して受講できますよ。
▼ おすすめのExcel VBA講座はこちら ▼