- 公開日:
- 更新日:
エクセルでデータを検索して抽出する方法
この記事では、エクセルでデータを検索して抽出する様々な方法をご紹介します。
エクセルでデータベースから任意の条件でデータを抽出することが出来れば、エクセルでの表の管理がさらにスムーズになります。
今回は、VLOOKUP関数やHLOOKUP関数等を使ってデータを抽出する方法をご紹介します。
列方向に検索して抽出する
列(縦)方向に検索して該当の行にある値を抽出したい場合は、「VLOOKUP関数」を使います。
VLOOKUP関数の書式は、「=VLOOKUP(検索値,範囲,列番号,[検索方法])」です。
VLOOKUP関数を使って、データを列方向に検索して抽出する方法を説明します。
VLOOKUP関数の使い方や、ワイルドカードを使ってあいまい検索を行う方法、別のシートを参照して値を検索する方法等については以下の記事でご説明しています。
ExcelのVLOOKUP関数の使い方|指定の列と同じ行にある値を返す

上の画像のような表を準備しましょう。
E3セルに「商品番号」を入力したら、VLOOKUP関数を使って左の表の「商品番号」を列方向に検索し同じ行にある商品名をF3セルに表示するという数式を作成します。
【F3セル】を選択し、『=VLOOKUP(』と入力します。

次に、検索値の引数を設定します。
E3セルに入力する商品番号で検索するので、「=VLOOKUP(」に続いて『E3,』と入力します。

次に、範囲の引数を設定します。
「E3,」に続いて『A3:C7,』と入力します。

次に、列番号の引数を入力します。
「商品名」は商品リストの2列目にあるので、「A3:C7,」に続いて『2,』と入力します。

次に、検索方法の引数を設定します。
今回は完全一致で検索したいので、「2,」に続いて『FALSE)』と入力しEnterを押します。

これで数式が完成しました。
試しに【E3セル】を選択し、『101』と入力してみます。

問題なく商品名が表示されました。
これで、VLOOKUP関数を使って列方向にデータを検索し抽出することが出来ました。
行方向に検索して抽出する
行(横)方向に検索して該当の行にある値を抽出したい場合は、「HLOOKUP関数」を使います。
HLOOKUP関数の書式は、「=HLOOKUP(検索値,範囲,行番号,[検索方法])」です。
HLOOKUP関数を使って、データを行方向に検索して抽出する方法を説明します。
HLOOKUP関数の使い方や、複数条件で検索する方法、別シートを参照して検索する方法等については以下の記事でご紹介しています。
ExcelのHLOOKUP関数の使い方|指定の行と同じ列にある値を返す

上の画像のような表を準備します。
今回はA3セルに「商品番号」を入力したら、HLOOKUP関数を使って商品リストから該当の商品番号を検索し同じ列にある「商品名」をB3セルに表示するという数式を作成します。
【B3セル】を選択し、『=HLOOKUP(』と入力します。

次に、検索値の引数を設定します。
A3セルに入力する商品番号を使って検索したいので、「=HLOOKUP(」に続いて『A3,』と入力します。

次に、範囲の引数を設定します。
「A3,」に続いて『B6:F8,』と入力します。

次に、行番号の引数を設定します。
「商品名」は商品リストの2行目にあるので「B6:F8,」に続いて『2,』と入力します。

次に検索方法の引数を設定します。
「2,」に続いて『FALSE)』と入力します。

これで数式が完成しました。
試しに【A3セル】を選択し、『101』と入力します。

問題なく商品名が表示されました。
これで、HLOOKUP関数を使って行方向にデータを検索し抽出することが出来ました。
文字列(キーワード)を検索して抽出する
VLOOKUP関数で、文字列を検索して抽出する方法をご説明します。今回はD3セルに商品名を入力したら、VLOOKUP関数を使って左の表から該当する商品の単価を検索しE3セルに表示するという数式を作成します。

上の画像のような表を準備します。【E3セル】を選択し、『=VLOOKUP(』と入力します。

次に、検索値の引数を設定します。「=VLOOKUP(」に続いて『D3,』と入力します。

次に、範囲の引数を設定します。「D3,」に続いて『A3:B7』と入力します。

次に、列番号の引数を設定します。「価格」は左の表の2列目にあるので「A3:B7」に続いて『2,』と入力します。

次に、検索方法の引数を設定します。今回は完全一致で検索したいので、「A3:B7」」に続いて『FALSE)』と入力し【Enter】キーを押します。

これで、数式が完成しました。試しに、【D3セル】を選択し『モンブラン』と入力し【Enter】キーを押してみます。

問題なく「モンブラン」の価格が抽出されました。これで、VLOOKUP関数を使って文字列でデータを検索し抽出することが出来ました。
日付を検索して抽出する

上の画像のように、何百行もあるようなデータベースから任意の日付のデータのみを抽出したい場合は、「フィルター機能」を使うのがおすすめです。
今回はオートフィルタの機能を使って、同じ日付のデータのみを抽出する方法をご説明します。
フィルター機能の詳細や、複数条件を設定する方法などについては以下の記事をご参照ください。

①【データベース内の任意のセル(例:A2セル)】、②【データ】タブ、③【フィルター】の順に選択します。

データベースの「項目名」に「▼」が追加されます。
①「日付」の【▼】を選択します。
②「任意の日付(例:2日)」に【チェックマーク】を入れて、③【OK】ボタンを押します。

これで、任意の日付でデータを抽出することが出来ました。
指定した複数条件で検索して抽出する
複数条件を指定してデータを検索し抽出したい場合は、「XLOOKUP関数」を使いましょう。
XLOOKUP関数は、Excel 2021から正式に追加された関数で買い切り型のExcel 2019をお使いの方はOffice Insidersに参加していないとお使いになれませんのでご注意ください。
XLOOKUP関数の書式は、「=XLOOKUP(検索値,検索範囲,戻り配列,[一致モード],[検索モード])」で、データを行/列両方の方向に検索することが出来ます。
以下の記事では、XLOOKUP関数の基本的な使い方や、VLOOKUP関数との違い等についてご紹介していますので参考にしてみて下さい。
ExcelのXLOOKUP関数の使い方|縦方向/横方向を両方検索する

今回は、上の画像のような表を使って、E3セルの「仕入れ先の工場名」とF3セルの「商品名」を指定して、左の商品リストから該当する商品の「単価」を抽出する方法をご説明します。
【G3セル】を選択し、『=XLOOKUP(』と入力します。

次に、検索値の引数を設定します。
今回は、E3セルに「仕入れ先の工場名」、F3セルに「商品名」を入力して検索値にするので、「=XLOOKUP(」に続いて『E3&F3,』と入力します。

次に、検索範囲の引数を設定します。
「仕入れ」の列と、「商品名」の列をそれぞれ指定します。
「E3&F3,」に続いて『A3:A12&B3:B12,』と入力します。

次に、戻り範囲の引数を設定します。
今回は複数の条件を元に「単価」を抽出するので「A3:A12&B3:B12,」に続いて『C3:C12,』と入力します。

次に、「見つからない場合」の引数を設定します。
今回は該当する商品がなければ、単価に「該当なし」と表示したいので「C3:C12,」に続いて『"該当なし")』と入力し、Enterを押します。

これで、数式が完成しました。
試しに、検索値を入力してみます。
①「E3セル」に『B工場』、②「F3セル」に『デスクトップパソコン』の順に入力し、Enterを押します。

これで、XLOOKUP関数を使って複数条件を設定し、データを抽出することが出来ました。