XLOOKUPで別シート・複数シートから検索する方法|VSTACK・INDIRECT

XLOOKUPで別シート・複数シートから検索する方法|VSTACK・INDIRECT

XLOOKUPで別シートを検索する場合は、検索範囲と戻り範囲にシート名を付けます。複数シートをまとめて探したいときはVSTACK、セルに指定した1枚のシートを探したいときはINDIRECTを組み合わせます。目的に合う方法を選びましょう。

目次

別シート・複数シート検索の早見表|どの方法を選ぶか

目的使う方法対応の目安
決まった1枚から検索XLOOKUPで別シートを直接参照Microsoft 365・2024・2021
A・B両シートをまとめて検索XLOOKUP+VSTACKMicrosoft 365・2024
入力したシート名へ切り替えXLOOKUP+INDIRECTMicrosoft 365・2024・2021
XLOOKUPが使えないVLOOKUP、または表を統合して検索Excel 2019・2016など

サンプルはAシートとBシートに「会員ID・氏名・電話番号」があります。検索用シートのA3に会員IDを入れ、B3へ電話番号を表示する例で説明します。

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

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

XLOOKUPで別シートを参照して検索する(シートをまたぐ書き方)

B9に入力:Aシートだけを検索(別シートを直接参照)
数式=XLOOKUP(A3,'A'!$A$2:$A$3,'A'!$C$2:$C$3,"該当なし")
ひとことでAシートの会員IDからA3を探し、同じ行の電話番号を返す
A3
検索値です。検索したい会員IDを入力するセルです(練習ファイルでは A002 が入っています)
'A'!$A$2:$A$3
探す範囲です。シート名を ‘ で囲み、「!」でセル範囲につなげると、別のシートを指定できます
'A'!$C$2:$C$3
返す範囲(電話番号の列)です。検索範囲と同じ行数にそろえます
"該当なし"
見つからないときに表示する文字です。省略すると #N/A になります
データの流れ
① Aシートの会員IDから、A3を探す(黄色)
‘A’!A2A001‘A’!A3A002
▼
② 同じ行の電話番号を返す結果
B9080-****-0002

AシートのA2:A3でIDを検索し、同じ行のC列の電話番号を返します。A3がA002なら「080-****-0002」です。数式を入力するときに、検索範囲・戻り範囲を別シート上で選択しても参照を作れます。

ポイントシート名に空白などがあるときは '会員 A'!A2:A100 のように、シート名をシングルクォーテーションで囲みます。検索範囲と戻り範囲は開始行・終了行をそろえてください。

複数シートをVSTACKでまとめて検索する

Aシートに2件、Bシートに1件ある場合、ID列どうしと電話番号列どうしを同じ順番で結合します。

B3に入力:AシートとBシートをまとめて検索(VSTACK)
数式=XLOOKUP(A3,VSTACK('A'!A2:A3,'B'!A2:A2),VSTACK('A'!C2:C3,'B'!C2:C2),"該当なし")
ひとことでA・Bシートの会員IDと電話番号をそれぞれ縦につなぎ、3件の中からA3を探す
A3
検索値です。検索したい会員IDを入力するセルです
VSTACK('A'!A2:A3,'B'!A2:A2)
AシートのID(2件)の下に、BシートのID(1件)をつなげた、3件ぶんの縦のリストです
VSTACK('A'!C2:C3,'B'!C2:C2)
電話番号も同じ順番でつなぎます。検索範囲と戻り範囲は、行数も順番もそろえるのがコツです
"該当なし"
どちらのシートにも無いときに表示する文字です
データの流れ
① A・Bシートの会員IDを縦につなぐ(3件)
‘A’!A2A001‘A’!A3A002‘B’!A2B001
▼
② A002の行の電話番号を返す結果
B3080-****-0002
ポイントA003など存在しないIDなら「該当なし」、B001ならBシートの電話番号が返ります。見出し行や空白行を大量に含めず、必要なデータ範囲を指定します。

VLOOKUPで書く場合

VSTACKとVLOOKUPの組み合わせ(Microsoft 365・Excel 2024)
数式=VLOOKUP(A3,VSTACK('A'!A2:C3,'B'!A2:C2),3,FALSE)
ひとことでA・Bシートの3列の表を縦につなぎ、左端の会員IDを探して3列目を返す
A3
検索値です。検索したい会員IDを入力するセルです
VSTACK('A'!A2:C3,'B'!A2:C2)
会員ID・氏名・電話番号の3列を、AシートとBシートで縦につないだ表です。IDの列を左端にします
3
表の左から3列目(電話番号)を返します
FALSE
完全一致の指定です
補足VLOOKUPは、見つからないと #N/A になります。「該当なし」と表示したいときは、IFNA(…,"該当なし") で包みます。
対応バージョンVSTACKで3列の表を縦に結合し、左端のIDを完全一致で探して3列目を返します。VLOOKUP自体は古いExcelにもありますが、この式はVSTACKを含むためExcel 2021・2019・2016では使えません。

シート名をセルで選んで検索する

検索用シートのE2に「A」または「B」を入力し、その1枚だけを検索する例です。A3は検索したいID、各シートのA列はID、C列は電話番号とします。

セルに入力したシート名で検索先を切り替える(INDIRECT)
数式=XLOOKUP(A3,INDIRECT("'"&E2&"'!A2:A100"),INDIRECT("'"&E2&"'!C2:C100"),"該当なし")
ひとことでE2に入れたシート名(AかB)のシートだけを検索する
A3
検索値です。検索したい会員IDを入力するセルです
INDIRECT("'"&E2&"'!A2:A100")
E2が A なら 'A'!A2:A100 という文字列を作り、INDIRECTが本物のセル範囲に変換します(& は文字をつなぐ記号)
INDIRECT("'"&E2&"'!C2:C100")
返す範囲(電話番号の列)も、同じ方法で作ります
"該当なし"
見つからないときに表示する文字です
データの流れ
① E2に入れたシート名で、検索先が決まる
E2A
▼
② そのシートのA列からA3を探し、C列の電話番号を返す結果
B6080-****-0002
注意E2を変更すると参照するシートが切り替わります。これは複数シートを総当たりする式ではありません。シート名にシングルクォーテーションを含む場合は追加のエスケープが必要なので、この例ではA・Bのような名前を使います。

VSTACKが使えないExcelではどうする?

Excel 2021では、2枚のシートを順にXLOOKUPで調べられます。AシートになければBシートを探す式です。

B6に入力:AになければBを探す(VSTACKを使わない入れ子)
数式=XLOOKUP(A3,'A'!A2:A3,'A'!C2:C3,XLOOKUP(A3,'B'!A2:A2,'B'!C2:C2,"該当なし"))
ひとことでAシートで見つからないときだけ、Bシートを探す
A3
検索値です。検索したい会員IDを入力するセルです
'A'!A2:A3
まず、Aシートの会員IDから探します
'A'!C2:C3
Aシートの電話番号の列です
XLOOKUP(A3,'B'!A2:A2,…)
4番目の引数(見つからないとき)に、もう1つのXLOOKUPを入れます。Aシートに無いときだけBシートを探し、どちらにも無ければ「該当なし」を返します
データの流れ
① Aシートの会員IDで探す
‘A’!A2A001‘A’!A3A002
▼
② 見つかれば電話番号を返す(無ければBシートを探す)結果
B6080-****-0002
ポイント対象シートが増える場合は、Power Queryなどで「シート名」列を持つ1つの表へ統合すると管理しやすくなります。Excel 2019・2016では統合した表をVLOOKUPで検索できます。

VLOOKUPで別シートを検索する書き方(XLOOKUPが使えないExcel)

Excel 2019・2016などXLOOKUPが無いExcelでは、VLOOKUPで別シートを検索できます。範囲の前にシート名と「!」を付けるだけで、考え方はXLOOKUPと同じです。

別シートをVLOOKUPで検索する(Excel 2016以降)
数式=VLOOKUP(A3,'A'!A2:C3,3,FALSE)
ひとことでAシートの3列の表から、A3の会員IDを探して3列目(電話番号)を返す
A3
検索値です。検索したい会員IDを入力するセルです
'A'!A2:C3
別シートの表(会員ID・氏名・電話番号)です。会員IDの列を左端にします
3
表の左から3列目(電話番号)を返します
FALSE
完全一致の指定です
補足見つからないときは #N/A になります。2枚のシートをまとめて探したいときは、表を1つに統合してから検索すると管理しやすくなります。

VLOOKUPの基本はVLOOKUPで別シートからデータを検索する方法、VLOOKUPとほかの検索関数の違いはVLOOKUP関数の使い方まとめで解説しています。

別シート検索で「該当なし」やエラーになるときの確認表

症状原因と確認点
同じIDの別のデータが出る通常は最初の一致。A→Bの結合順とID重複を確認
#REF!INDIRECTのシート名や範囲が存在するか確認
#NAME?XLOOKUP・VSTACKに対応するExcelか確認
IDがあるのに該当なし数値と文字列、前後スペース、検索範囲を確認
注意別ブックをINDIRECTで参照する場合は、参照先ブックを開く必要があります。同じIDの全件を抽出するなら、XLOOKUPの1件検索ではなくFILTERを使います。

次のステップ:データ追加に合わせて検索範囲を広げる

次のステップ:条件に一致した全行を抽出する

仕様の確認:Microsoft公式・XLOOKUP関数 / Microsoft公式・VSTACK関数 / Microsoft公式・INDIRECT関数

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

この記事を書いた人

コメント

コメントする

目次