XLOOKUP関数で別シートから検索・抽出する方法|複数条件の数式と実例

XLOOKUP関数で別シートから検索・抽出する方法|複数条件の数式と実例

XLOOKUPで別シートから値を取り出すには、検索範囲と戻り範囲に「シート名!範囲」を指定します。たとえば「データ」シートのB列から果物IDを探し、同じ行のF列の価格を返す式は次のとおりです。

無料Excelサンプルで、まず試してみる
果物IDと産地を指定すると、別シートの表から価格を取り出せます。完成済みの数式を使い、条件を変えたときの結果を確かめましょう。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
対応:Microsoft 365・Excel 2021・Excel 2024
ダウンロードしたら、この3ステップ
1. ダウンロードしたファイルを開き、「検索練習」シートを選びます。
2. 果物IDのB2は21のまま、黄色いB3セルの「青森」を「山形」に変更します。
3. B5の価格が800から1,500に変われば成功です。「データ」シートの果物ID21・産地「山形」の価格を取得しています。
XLOOKUPの2条件検索とFILTERの全行抽出を比べるExcelサンプル
最初は果物ID21・青森の価格800を表示しています。初めて試すときは、黄色いB3と結果のB5に注目してください。
B8はIDだけで探した先頭の1件、A11以降は同じIDの全件です。B3の産地を変えて動くのは2条件検索のB5です。下の結果との違いは、本文で順番に説明します。
開いたときに保護ビューが表示され、入力できない場合は、ファイルの入手元を確認して「編集を有効にする」を選んでください。
B6に入力:別シートから1件だけ探す
数式=XLOOKUP(B2,'データ'!$B$2:$B$8,'データ'!$F$2:$F$8,"該当なし",0)
ひとことで「データ」シートから、果物IDに一致する最初の価格を返す
B2
検索値(果物ID)のセルです
'データ'!$B$2:$B$8
別シートの、果物IDの列です
'データ'!$F$2:$F$8
別シートの、価格の列です
補足同じIDが複数あっても、上から最初の1件(山形の1500)を返します。

B2は数式を入力するシートの検索値です。「データ」シートのB2とは別のセルなので区別してください。XLOOKUPはMicrosoft 365・Excel 2021・2024で利用でき、Excel 2019・2016では利用できません。

やりたいこと方法
別シートから最初に一致する1件を取得XLOOKUPでシート名を指定
果物IDと産地の両方に一致する価格を取得2条件を掛け合わせてXLOOKUPで検索
一致する行を全部取り出すFILTERで複数行を抽出
複数のシートから検索先を選ぶ複数シートから検索・抽出する方法
目次

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

サンプルデータとシートの準備

ファイルには「検索練習」と「データ」の2シートがあります。「データ」のA1:F8は次の表です。「検索練習」の黄色いB2・B3を書き換えて試せます。B5には2条件検索の完成式が入っています。基本から試すときは、コピーしたファイルでB5の式を順に置き換えてください。

XLOOKUPで検索する別シートの果物と産地の元データ
「データ」シート。B列の果物IDとE列の産地で、F列の価格を特定します。
行A:番号B:果物IDC:果物名称D:都道府県IDE:都道府県名称F:価格
2111りんご02青森100
3211りんご20長野500
4311りんご06山形330
5421さくらんぼ06山形1500
6521さくらんぼ02青森800
7631キウイ22静岡80
8731キウイ20長野60

別シートから検索する基本の手順

1
検索練習シートのA2に「果物ID」、B2に数値の21を入力します。
2
同じシートのA5に「価格」と入力し、B5に冒頭のXLOOKUP式を入力します。
3
結果が1500になることを確認します。
数式の部分役割
B2検索練習シートに入力した果物ID(21)
‘データ’!$B$2:$B$8検索先の果物IDの列
‘データ’!$F$2:$F$8返す価格の列
“該当なし”一致するIDが見つからない場合の表示
0完全一致で検索(省略しても完全一致)

果物IDが21の行は2行ありますが、通常のXLOOKUPは上から最初に一致する行を返すため、山形の1500になります。青森の800を選びたい場合は、産地も検索条件に加えます。

シート名を間違えずに指定するには

数式入力中に「データ」シートのタブをクリックし、対象範囲をドラッグするとシート参照が入力されます。シート名に空白がある場合も、'売上 データ'!$B$2:$B$8のようにシングルクォートで囲めば指定できます。

$はコピー時に範囲がずれないための固定です。検索値のB2を変えれば結果が変わり、式を下へコピーすれば検索値はB3、B4と移動します。検索値も固定したい場合は$B$2にします。

複数条件で別シートを検索する

検索練習シートのA3に「産地」、B3に「青森」を入力します。B5の式を次に置き換えてください。

B5に入力:別シートから2条件で探す
数式=XLOOKUP(1,('データ'!$B$2:$B$8=B2)*('データ'!$E$2:$E$8=B3),'データ'!$F$2:$F$8,"該当なし",0)
ひとことで果物IDと産地の両方が一致する価格を返す
'データ'!$B$2:$B$8=B2
果物IDが一致する行は TRUE(1)になります
'データ'!$E$2:$E$8=B3
産地が一致する行は TRUE(1)になります
'データ'!$F$2:$F$8
返す価格の列です
補足2つを掛けると、両方が一致した行だけが1になります。B2が21・B3が青森なら、結果は 800 です。

B2が21、B3が青森なら結果は800です。B3を山形に変えると1500になります。

  • 'データ'!$B$2:$B$8=B2で果物IDが一致する行を調べます。
  • 'データ'!$E$2:$E$8=B3で産地が一致する行を調べます。
  • 2つの条件を掛けると、両方がTRUEの行だけが1になります。
  • XLOOKUPで1を探し、同じ行の価格を返します。

この方法なら、条件を文字列としてつなぐ際の衝突を避けられます。条件が3つなら比較式をもう1つ掛けます。各条件の範囲と戻り範囲は、同じ行数にそろえてください。

「&」で条件をつなぐ場合の注意

複数条件を&で連結する書き方もあります。たとえば、このデータで次の式を使うと1500になります。

セルに入力:「&」で条件をつなぐ書き方
数式=XLOOKUP(21&"山形",データ!B2:B8&データ!E2:E8,データ!F2:F8)
ひとことで果物IDと産地をつないだ文字で検索する
21&"山形"
IDと産地をつないだ検索値です
データ!B2:B8&データ!E2:E8
別シートの2列をつないだ検索範囲です
データ!F2:F8
返す価格の列です
補足この表では 1500 になります。ただし、区切りなしでつなぐと、「1と23」と「12と3」が同じ「123」になるので、条件が数値のときは、掛け算の書き方が安全です。

この表では使えますが、区切りなしの連結では「1と23」「12と3」が同じ「123」になります。条件の値が変わる実務の表では、上記の条件ごとに比較して掛け合わせる式が分かりやすく、こうした衝突も避けられます。

2列以上をまとめて取り出す・一致する全行を取り出す

同じ行の複数列を返す

戻り範囲を複数列にすると、最初に一致した行の複数項目を横へ表示できます。次の式は「データ」のE~F列、つまり産地と価格を返します。

B8に入力:同じ行の2列をまとめて取り出す
数式=XLOOKUP(B2,'データ'!$B$2:$B$8,'データ'!$E$2:$F$8,"該当なし",0)
ひとことで最初に一致した行の「産地」と「価格」を、横に並べて返す
B2
検索値(果物ID)のセルです
'データ'!$B$2:$B$8
別シートの、果物IDの列です
'データ'!$E$2:$F$8
返す範囲を2列(産地・価格)にします
補足B8とC8に結果が広がります(スピル)。B2が21なら「山形」と1500です。

検索練習シートのB8などへ入力し、右隣のC8を空けてください。B2が21なら「山形」「1500」が並びます。

同じIDの行をすべて取り出す

XLOOKUPの「複数列を返す」ことと、「一致した複数行を全部返す」ことは別です。後者にはFILTERを使います。検索練習シートのA11など、6列×2行分の空きがある場所に次の式を入力してください。

A11に入力:同じIDの行をすべて取り出す
数式=FILTER('データ'!A2:F8,'データ'!B2:B8=B2,"該当なし")
ひとことで果物IDが一致する行を、すべて返す
'データ'!A2:F8
返す範囲(全6列)です
'データ'!B2:B8=B2
果物IDが一致する行を指定します
補足B2が21なら、さくらんぼの山形・青森の2行が返ります(スピル)。

B2が21なら、さくらんぼの山形・青森の2行が返ります。文字の一部を条件に行を取り出す場合は特定の文字を含む行を抽出する方法をご覧ください。

別シートから検索できないときの確認点

症状原因と確認方法
#N/A、または「該当なし」検索値が元表にあるか確認。数字と文字列の違い、余分な空白、全角・半角も確認。
#REF!参照先のシートや範囲を削除していないか確認。
#VALUE!検索範囲と戻り範囲の大きさをそろえる。複数条件なら条件範囲の行数もそろえる。
#SPILL!複数列を返す先に既存データや結合セルがないか確認。
#NAME?、または_xlfn.が表示されるExcelの対応バージョンと関数名を確認。
違う産地の価格が返るIDだけでは複数行に一致するため、産地も条件に加える。
新しく追加したデータが検索されないB2:B8・E2:E8・F2:F8など対象の全範囲を同じ最終行まで広げる。

数値の21と文字列の「21」は、完全一致検索で一致しない原因になります。ISNUMBERやTYPEで双方の型を調べ、必要なら文字列を数値に一括変換する方法でそろえてください。先頭の0が必要なコードは、文字列に統一して扱います。

戻り先の元セルが空白なら、0が返る場合があります。これは「見つからなかった」とは別です。「該当なし」は検索条件に一致する行がない場合の表示です。

よくある質問

Excel 2019・2016ではどうすればよいですか?

1条件の基本例なら、VLOOKUPで次のように書けます。データのB列からF列までの5列を対象にし、5列目の価格を完全一致で取り出します。

セルに入力:Excel 2019・2016でのVLOOKUP
数式=IFNA(VLOOKUP(B2,'データ'!$B$2:$F$8,5,FALSE),"該当なし")
ひとことで1条件の基本例なら、VLOOKUPでも別シートを検索できる
B2
検索値のセルです
'データ'!$B$2:$F$8
果物ID(B列)からF列までの5列です
5
5列目(価格)を返します
補足同じIDが複数あると、先頭の行を返します。

この式も同じIDが複数あると先頭の行を返します。複数条件では補助列などを用いた別の設計が必要です。

別シートと別ファイルの参照は同じですか?

この記事は同じブック内の別シートを対象にしています。別ファイルではブック名を含む参照になり、ファイルの移動や名前の変更にも注意が必要です。ここで示したシート名だけの式をそのまま使うことはできません。

複数のシートを一度に検索できますか?

1つの別シートを参照する例とは異なり、検索するシートを選ぶ、またはデータをまとめる設計が必要です。複数シートからシートを選んで検索する方法を参照してください。

解説を読んだら、サンプルで試してみましょう

別シートのXLOOKUP検索のExcelサンプルをダウンロード(無料)

開くシートと最初の操作をもう一度確認する

関連する解説・参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次