Google スプレッドシートの VLOOKUP で別シートを参照するには、範囲の前に「シート名!」を付けて =VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE) と書きます。 別ファイルなら範囲の位置に IMPORTRANGE を入れ、列全体にまとめて適用するなら ARRAYFORMULA で包みます。

この記事は、スプレッドシート専用の「別シート参照とエラー対処」に絞り、Google ドキュメント エディタ ヘルプに書かれた引数の仕様に沿って、コピペできる数式・関数の選び方・#N/A の原因別の対処をまとめます。

確認環境:構文・引数・エラーの説明は、Google ドキュメント エディタ ヘルプの各関数のページを 2026-10-05 に開いて確認しました。「Calc で求めた値」と書いた計算結果は、同じ数式を LibreOffice Calc 24.2.7.2 で計算した値です(VLOOKUP・INDEX・MATCH・IFNA・TRIM・VALUE・LEN・ISNUMBER)。XLOOKUP・FILTER・QUERY・IMPORTRANGE・ARRAYFORMULA は、ヘルプの構文に沿った数式を載せています。

この記事の結論

  • 同じファイルの別シート:=VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE)(範囲の前に シート名!)
  • 別ファイル:=VLOOKUP(A2, IMPORTRANGE("URL", "商品マスタ!A:D"), 2, FALSE)(範囲に IMPORTRANGE を入れ子)
  • 列全体に一括適用:=ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, 商品マスタ!A:D, 2, FALSE)))
  • 4番目の引数は FALSE。省略すると近似照合になり、違う行の値が返ることがある。
  • #N/A は原因を切り分けてから IFNA で表示を決める。先に IFNA で包むと原因が見えなくなる。

別シート参照の数式早見表

やりたいこと 数式 ポイント
同じファイルの別シートを引く =VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE) 範囲の前に シート名! を付ける
シート名に空白がある =VLOOKUP(A2, '在庫 2026'!A:B, 2, FALSE) シート名を ' で囲む
XLOOKUP で別シートを引く =XLOOKUP(A2, 商品マスタ!A:A, 商品マスタ!B:B, "未登録") 検索範囲と結果の範囲を別々に指定
別ファイルを引く =VLOOKUP(A2, IMPORTRANGE("URL", "商品マスタ!A:D"), 2, FALSE) 範囲の位置に IMPORTRANGE を入れる
列全体に一括で適用 =ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, 商品マスタ!A:D, 2, FALSE))) 先頭のセル1つに入力する
見つからないときの表示を決める =IFNA(VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE), "未登録") #N/A だけを置き換える
左側の列を返す =INDEX(商品マスタ!A:A, MATCH(A2, 商品マスタ!D:D, 0)) XLOOKUP でも可
2つの条件で引く =ARRAYFORMULA(XLOOKUP(1, (価格表!A2:A5=A2)*(価格表!B2:B5=B2), 価格表!C2:C5)) 条件を掛け合わせて 1 を探す

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「スプレッドシートのVLOOKUPで別シート参照 XLOOKUP・複数条件も」

説明で使うサンプルの表

「商品マスタ」シート(A1:D6)

商品コード 商品名 単価 棚番
A-100 ノートPC スタンド 3200 T-01
A-205 ホワイトボード マーカー 480 T-02
B-010 延長コード 3m 1500 T-03
B-150 付箋 75mm 350 T-04
C-300 Web カメラ 6800 T-05

「価格表」シート(A1:D5。D 列は複数条件の説明で使う作業列で、=A2&"_"&B2 を入れています)

商品コード サイズ 単価 キー(作業列)
A-100 S 3200 A-100_S
A-100 L 4100 A-100_L
B-010 S 1500 B-010_S
B-010 L 2100 B-010_L
商品コード   商品名 単価  棚番
A-100   ノートPC スタンド  3200    T-01
A-205   ホワイトボード マーカー    480 T-02
B-010   延長コード 3m    1500    T-03
B-150   付箋 75mm 350 T-04
C-300   Web カメラ 6800    T-05
商品コード   サイズ 単価
A-100   S   3200
A-100   L   4100
B-010   S   1500
B-010   L   2100

同じファイルの別シートを参照する(シート名!範囲)

数式を入れるシート(ここでは「注文」シート)の A2 に商品コードがあるとします。

=VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE)
  • 商品マスタ!A:D:商品マスタ シートの A〜D 列。シート名のあとに ! を付けます。
  • 2:範囲の左から2列目(商品名)を返します。
  • FALSE:完全一致で探します。

同じ数式を Calc で計算した値は次のとおりです。

検索キー(A2) 数式 Calc で求めた値
B-010 =VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE) 延長コード 3m
B-010 =VLOOKUP(A2, 商品マスタ!A:D, 3, FALSE) 1500
C-300 =VLOOKUP(A2, 商品マスタ!$A$2:$D$6, 3, FALSE) 6800
B-010 =VLOOKUP("B-010", '在庫 2026'!A:B, 2, FALSE)(在庫 2026 シートの B-010 は 40) 40
B-010 =INDEX(商品マスタ!C:C, MATCH(A2, 商品マスタ!A:A, 0)) 1500
T-03 =INDEX(商品マスタ!A:A, MATCH(A2, 商品マスタ!D:D, 0)) B-010

シート名に空白が入っているときは '在庫 2026'!A:B のように ' で囲みます。範囲を A2:D6 のように行まで指定して下へコピーする場合は、$A$2:$D$6 と $ を付けて固定します。

VLOOKUP の引数(ヘルプの仕様)

構文は VLOOKUP(検索キー, 範囲, 番号, [並べ替え済み]) です。

引数 意味 ヘルプに書かれている決まり
検索キー 探す値 セル参照も使える
範囲 探す表 範囲の最初の列で検索キーを探す
番号 返す列が範囲の左から何列目か 先頭は 1。1 より小さいと #VALUE!、範囲の列数より大きいと #REF!
並べ替え済み 近似照合にするかどうか 省略時は TRUE(近似照合)。完全一致は FALSE。ヘルプは完全一致の利用を勧めている

XLOOKUP で別シートを参照する

XLOOKUP は、探す列と返す列を別々に指定します。構文は XLOOKUP(検索キー, 検索範囲, 結果の範囲, [見つからない場合の値], [一致モード], [検索モード]) です。

=XLOOKUP(A2, 商品マスタ!A:A, 商品マスタ!B:B, "未登録")

棚番(D 列)から商品コード(A 列)を引くように、返す列が左側にあっても同じ書き方で指定できます。

=XLOOKUP(A2, 商品マスタ!D:D, 商品マスタ!A:A, "未登録")
引数 意味 ヘルプに書かれている決まり
検索キー 探す値 —
検索範囲 探す列(または行) 単一の行または列
結果の範囲 返す列(または行) 行数または列数を検索範囲とそろえる。複数列を指定すると一致した行全体を返す
見つからない場合の値 一致がないときに返す値 省略可。省略時は #N/A
一致モード 一致のしかた 既定は 0(完全一致)。1:完全一致または次に大きい値、-1:完全一致または次に小さい値、2:ワイルドカード
検索モード 探す向き 既定は 1(先頭から)。-1:末尾から、2:昇順の二分探索、-2:降順の二分探索

一致モードの既定が完全一致なので、VLOOKUP の「4番目の引数の付け忘れ」にあたることが起きません。

別ファイルを参照する(IMPORTRANGE を入れ子)

別のスプレッドシートにあるマスタは、範囲の位置に IMPORTRANGE を入れます。構文は IMPORTRANGE(スプレッドシートの URL, 範囲の文字列) で、範囲の文字列は "シート名!範囲" の形で書きます。

=VLOOKUP(A2, IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit", "商品マスタ!A:D"), 2, FALSE)
=XLOOKUP(A2, IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit", "商品マスタ!A:A"), IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxxx/edit", "商品マスタ!B:B"), "未登録")

ヘルプに書かれている決まりは次のとおりです。

  • 読み込み先のスプレッドシートから、読み込み元へのアクセスを明示的に許可する必要があります。許可前は #REF! と「これらのシートをリンクする必要があります」が表示されます。
  • 読み込めるデータはリクエストごとに 10 MB までです。
  • ドキュメントを開いている間、1 時間ごとに更新が確認されます。

同じファイルを何か所からも IMPORTRANGE で読むより、1枚のシートに一度読み込み、そのシートを シート名!範囲 で参照する形にすると、数式が短くなり読み込みの回数も減らせます。

列全体に一括で適用する(ARRAYFORMULA)

1行ごとに数式をコピーする代わりに、先頭のセル(B2 など)に1つだけ入力します。構文は ARRAYFORMULA(配列数式) です。

=ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, 商品マスタ!A:D, 2, FALSE)))
  • A2:A:検索キーを列ごと渡します。
  • IF(A2:A="", "", …):キーが空の行は空のままにします。
  • 見つからない行の表示も決めるなら、VLOOKUP を IFNA(VLOOKUP(…), "未登録") に置き換えます。

ヘルプには、数式の編集中に Ctrl+Shift+Enter を押すと先頭に ARRAYFORMULA( が追加されると書かれています。

VLOOKUP・XLOOKUP・INDEX+MATCH・FILTER・QUERY の選び方

「左側の列を返すか」「複数条件か」「複数行を返すか」の3点で比べます。

関数 左側の列を返す 複数条件 複数行を返す 向いている場面
VLOOKUP 返せない(範囲の最初の列で探す) 連結キーを作る 最初の一致だけ キー列が左端にある表を、1条件で引く
XLOOKUP 返せる 連結キー、または条件の掛け合わせ 一致した1行(結果の範囲を複数列にすると、その行の複数列) 列の位置に左右されずに引く。見つからないときの値も一緒に決める
INDEX+MATCH 返せる 条件の掛け合わせ 一致した1行 XLOOKUP と同じ考え方を、位置(MATCH)と取り出し(INDEX)に分けて書く
FILTER 列を自由に選べる 条件を引数に並べる 返せる(一致した行すべて) 同じキーの行が複数あり、全部ほしい
QUERY 列を自由に選べる クエリの where 句に条件を書く 返せる 絞り込みに加えて、並べ替えや集計もまとめて行う
条件 選ぶもの
キー列が左端にあり、条件は1つ VLOOKUP(4番目は FALSE)
返したい列がキー列より左にある XLOOKUP、または INDEX+MATCH
見つからないときの表示も同時に決めたい XLOOKUP(4番目の引数)
条件が2つ以上で、返すのは1件 XLOOKUP の条件掛け合わせ、または連結キー
一致する行をすべて返したい FILTER
絞り込んだうえで並べ替え・集計もしたい QUERY
別ファイルの表を引く 上のいずれかの範囲に IMPORTRANGE を入れる

FILTER は条件に合う行がないと #N/A を返します。QUERY は、1つの列に種類の違うデータが混ざっていると、多いほうの種類が使われ、少ないほうは NULL として扱われます(いずれもヘルプの記載)。

複数条件で検索する2つの方式

「商品コードが A-100 で、サイズが L」の単価(4100)を価格表から引く例です。注文シートの A2 に商品コード、B2 にサイズがあるとします。

方式1:連結キーを作る

条件の列を & でつなぎ、1つのキーにします。区切り文字(ここでは _)を挟むと、A-1 と 00、A-10 と 0 のように境目の違う組み合わせが同じキーになることを防げます。

価格表に作業列(D 列に =A2&"_"&B2)を用意する書き方です。

=INDEX(価格表!C:C, MATCH(A2&"_"&B2, 価格表!D:D, 0))

この数式を Calc で計算した値は 4100 でした(検索キー A-100_L)。XLOOKUP なら次のように書けます。

=XLOOKUP(A2&"_"&B2, 価格表!D:D, 価格表!C:C, "未登録")

作業列を作らずに、数式の中で連結する書き方です。{ } は配列を作る記法で、ヘルプではカンマが列の区切りと説明されています。

=ARRAYFORMULA(VLOOKUP(A2&"_"&B2, {価格表!A2:A5&"_"&価格表!B2:B5, 価格表!C2:C5}, 2, FALSE))
=ARRAYFORMULA(XLOOKUP(A2&"_"&B2, 価格表!A2:A5&"_"&価格表!B2:B5, 価格表!C2:C5, "未登録"))

方式2:XLOOKUP で条件を掛け合わせる

条件式は、成り立つ行で TRUE(1)、成り立たない行で FALSE(0)になります。掛け合わせるとすべての条件が成り立つ行だけが 1 になるので、その 1 を探します。

=ARRAYFORMULA(XLOOKUP(1, (価格表!A2:A5=A2)*(価格表!B2:B5=B2), 価格表!C2:C5, "未登録"))

同じ掛け合わせを INDEX+MATCH で書くと次のとおりです。この数式を Calc で配列数式として計算した値は 4100 でした。

=ARRAYFORMULA(INDEX(価格表!C2:C5, MATCH(1, (価格表!A2:A5=A2)*(価格表!B2:B5=B2), 0)))

一致する行をすべて返したいときは FILTER を使います。構文は FILTER(範囲, 条件1, [条件2, …]) で、条件を引数に並べます。

=FILTER(価格表!A2:C5, 価格表!A2:A5=A2, 価格表!B2:B5=B2)

2つの方式の選び方

条件 選ぶ方式 理由
マスタに作業列を追加できる 方式1(作業列) 数式が短く、VLOOKUP でも引ける
マスタの列を増やせない 方式2(掛け合わせ) 元の表を変えずに書ける
「以上・以下」など等号以外の条件がある 方式2(掛け合わせ) 条件式を >= などに変えられる
条件の値に区切り文字と同じ文字が入る 方式2(掛け合わせ) 連結による取り違えが起きない

#N/A の原因別の対処早見表

ヘルプでは、VLOOKUP の #N/A は「検索キーが最初の列で見つからない」「近似照合で検索キーが最小値より小さい」場合に出ると説明されています。見つからない理由を次の順に確かめます。

原因 起きること 確かめ方 直し方
完全一致の指定漏れ(4番目の引数を省略) 近似照合になり、別の行の値が返る。検索キーが最小値より小さいと #N/A 数式の4番目の引数を見る FALSE を付ける
前後の空白 見た目は同じでも別の値として扱われ #N/A =LEN(A2) で文字数を数える TRIM(A2) で囲む。元データの空白を取り除く
数値と文字列の不一致 数値がテキストとして入っていると、予期しない戻り値になる =ISNUMBER(A2) で型を見る VALUE(A2) で数値にそろえる。または列の表示形式をそろえて入力し直す
範囲のずれ(キー列が範囲の先頭にない) 最初の列にキーがないため #N/A 範囲の左端の列がキー列かを見る 範囲をキー列から始める。または XLOOKUP・INDEX+MATCH にする
範囲のずれ(行が足りない) 範囲の外にある行が見つからず #N/A 範囲の最終行を見る A:D のように列全体を指定する。コピーするなら $ で固定する
アクセス許可前(IMPORTRANGE) #REF! と「これらのシートをリンクする必要があります」の表示 IMPORTRANGE だけを空いたセルに入れて表示を見る 読み込み元へのアクセスを許可する
本当に存在しない #N/A(正しい結果) マスタを検索して確かめる IFNA(…, "未登録") で表示を決める

原因を再現した数式と結果

同じ数式を Calc で計算した値です。

検索キー(A2) 数式 Calc で求めた値 読み取れること
B-100(マスタにない) =VLOOKUP(A2, 商品マスタ!A:D, 2) 延長コード 3m エラーにならず、B-010 の商品名が返った
B-100(マスタにない) =VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE) #N/A 完全一致なら「ない」と分かる
B-100(マスタにない) =IFNA(VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE), "未登録") 未登録 表示を決められる
「B-010 」(後ろに空白1つ) =VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE) #N/A 空白1つで別の値になる
「B-010 」(後ろに空白1つ) =LEN(A2) 6 見た目は5文字でも6文字ある
「B-010 」(後ろに空白1つ) =VLOOKUP(TRIM(A2), 商品マスタ!A:D, 2, FALSE) 延長コード 3m TRIM で引ける
B-010 =VLOOKUP(A2, 商品マスタ!B:D, 2, FALSE) #N/A 範囲が B 列始まりだとキーが見つからない
C-300(6行目) =VLOOKUP(A2, 商品マスタ!A2:D5, 2, FALSE) #N/A 範囲が5行目で終わっている
文字列の 1002 =ISNUMBER(A2) FALSE 数字に見えても文字列
文字列の 1002 =VLOOKUP(VALUE(A2), 番号マスタ!A:B, 2, FALSE) 三脚 数値にそろえると引ける

「番号マスタ」シートは、A 列に数値の備品番号(1001〜1003)、B 列に備品名(1002 は三脚)を入れた表です。

IFNA と IFERROR の使い分け

IFNA の構文は IFNA(値, NAエラーの場合の値) で、#N/A のときだけ2番目の値を返します。IFERROR は IFERROR(値, [エラー値]) で、エラーの種類を問わず置き換えます。

=IFNA(VLOOKUP(A2, 商品マスタ!A:D, 2, FALSE), "未登録")

検索では IFNA を選ぶと、#REF!(範囲や番号の誤り、アクセス許可前)のような直すべきエラーはそのまま表示され、気付きやすくなります。

確かめて分かったこと

  1. 4番目の引数を省略した VLOOKUP は、マスタにないキーでもエラーを出さずに値を返しました。 B-100 を探すと B-010 の「延長コード 3m」が返っています。エラーが出ないぶん気付きにくいので、完全一致の FALSE を最初から付けておくのが確実です。
  2. 後ろに空白が1つあるだけで #N/A になり、LEN は 6 を返しました。 見た目で判断せず、文字数で確かめると早く切り分けられます。
  3. 番号が範囲の列数を超えたときのエラー表示は、表計算ソフトによって違います。 Google のヘルプでは #REF! と書かれていますが、Calc で =VLOOKUP(A2, 商品マスタ!A:C, 4, FALSE) を計算すると #VALUE! でした。エラーの種類から原因を探すときは、使っているソフトのヘルプを見ます。
  4. 文字列の「1002」で数値の列を探す例は、Calc では一致して値が返りました。 Google のヘルプは、数値をテキストとして入れると予期しない戻り値になると注意しています。型の扱いはソフトごとに違うので、VALUE でそろえるか、入力の段階で型を統一しておくと、どちらでも同じ結果になります。
  5. IMPORTRANGE の許可前に出るのは #N/A ではなく #REF! です。 IFERROR で包んでいるとこの表示が隠れるため、別ファイル参照がうまくいかないときは、IMPORTRANGE だけを空いたセルに入れて表示を確かめます。

よくある質問

Q. VLOOKUP で別シートを参照できないときは何を確かめればよいですか? A. まず範囲が シート名!A:D の形になっているか、シート名のつづりが合っているかを確かめます。空白を含むシート名は ' で囲み、そのうえで4番目の引数が FALSE になっているかを見ます。

Q. VLOOKUP と XLOOKUP の違いは何ですか? A. VLOOKUP は範囲の最初の列で探して「左から何列目」を返し、XLOOKUP は探す列と返す列を別々に指定します。XLOOKUP は左側の列も返せ、見つからないときの値を引数で決められ、既定が完全一致です。

Q. #N/A を表示させたくないときはどうすればよいですか? A. IFNA(数式, "未登録") で包むと、見つからないときの表示を決められます。空白や型の違いが原因の #N/A まで隠れてしまうので、原因を確かめてから包む順番にします。

Q. 別シートの VLOOKUP を列全体に入れるにはどうすればよいですか? A. 先頭のセルに =ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, 商品マスタ!A:D, 2, FALSE))) を1つ入力します。キーが空の行は空のまま表示され、行ごとに数式をコピーする手間がなくなります。

まとめ

  • 別シートは シート名!範囲、空白を含むシート名は ' で囲む。
  • 別ファイルは 範囲の位置に IMPORTRANGE。最初にアクセスの許可が必要で、許可前は #REF!。
  • 列全体への適用は ARRAYFORMULA を先頭セルに1つ。
  • VLOOKUP の 4番目の引数は FALSE。XLOOKUP は既定が完全一致。
  • 左側の列は XLOOKUP か INDEX+MATCH、複数行は FILTER、集計まで行うなら QUERY。
  • 複数条件は 連結キーか条件の掛け合わせ。
  • N/A は 指定漏れ・空白・型・範囲の順に確かめ、最後に IFNA で表示を決める。

参考・出典

Google ドキュメント エディタ ヘルプ(いずれも 2026-10-05 閲覧)

  • VLOOKUP(https://support.google.com/docs/answer/3093318?hl=ja)
  • XLOOKUP(https://support.google.com/docs/answer/12405947?hl=ja)
  • IMPORTRANGE(https://support.google.com/docs/answer/3093340?hl=ja)
  • ARRAYFORMULA(https://support.google.com/docs/answer/3093275?hl=ja)
  • FILTER(https://support.google.com/docs/answer/3093197?hl=ja)
  • QUERY(https://support.google.com/docs/answer/3093343?hl=ja)
  • MATCH(https://support.google.com/docs/answer/3093378?hl=ja)、INDEX(https://support.google.com/docs/answer/3098242?hl=ja)
  • IFNA(https://support.google.com/docs/answer/9365944?hl=ja)、TRIM(https://support.google.com/docs/answer/3094140?hl=ja)、VALUE(https://support.google.com/docs/answer/3094220?hl=ja)
  • LEN(https://support.google.com/docs/answer/3094081?hl=ja)、ISNUMBER(https://support.google.com/docs/answer/3093296?hl=ja)
  • 配列の作成(波かっこの記法)のヘルプ(https://support.google.com/docs/answer/6208276?hl=ja)
  • Google スプレッドシートの関数リスト(https://support.google.com/docs/table/25273?hl=ja)

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「スプレッドシートのVLOOKUPで別シート参照 XLOOKUP・複数条件も」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?