0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VLOOKUPで別シートを引くと#N/Aになる・違う値が出るときの確認手順

0
Last updated at Posted at 2026-10-06

リード一覧のタブに、キャンペーンコードからキャンペーン名を引く列があるとします。対応表は別のタブにあります。

=VLOOKUP(D2, 'キャンペーン対応表'!$A:$C, 2, FALSE)

D2のコードを対応表のA列で探して、見つかった行の2列目(B列)を返す式です。これが#N/Aになる、あるいは別のキャンペーン名が返ってくる。原因はだいたい次の6つのどれかなので、早く確かめられる順に並べました。上から順に試してください。式の末尾にFALSEがあって#N/Aが出ているなら、2から読んで構いません。

1. 末尾のFALSEが無いと、違う値や#N/Aが出ることがあります

最初に見るのは式の末尾です。FALSEを書かないと近似一致で動きます。近似一致は、対応表の左端の列が昇順に並んでいる前提の動きです。並んでいない対応表に使うと、思っていない行の値が返ったり#N/Aになったりするうえ、合っているように見える行も混ざるので気づきにくいです。「#N/Aは出ないのに違う値が出る」なら、私はここを最初に疑います。

=VLOOKUP(D2, 'キャンペーン対応表'!$A:$C, 2)

この形で違う値が出ているなら、末尾にFALSEを足せば完全一致になります。

2. 探す値が範囲の左端の列に無いと、見つかりません

VLOOKUPが探すのは範囲の1列目だけです。対応表がA列「No.」、B列「コード」、C列「キャンペーン名」の並びだと、'キャンペーン対応表'!$A:$Cでは通し番号を探しに行くので、コードは見つかりません。

範囲をコードの列から始めます。列番号は範囲の左端から数えるので、B:Cならキャンペーン名は2です。

=VLOOKUP(D2, 'キャンペーン対応表'!$B:$C, 2, FALSE)

範囲の列数より大きい数字を書くと#REF!が出て、違う値が返るときは隣の列を引いていないかもここで見ます。

3. 下の行だけ#N/Aなら、まず範囲がずれていないかを見ます

上の行は合うのに、途中から#N/Aになる。この形のときは、数式を下にコピーしたときに範囲も一緒に動いていないかを先に見ます。

=VLOOKUP(D2, 'キャンペーン対応表'!A2:C200, 2, FALSE)

この式を10行下にコピーすると、範囲はA12:C210です。対応表の先頭10行が、探す範囲から外れています。直すなら$A$2:$C$200か、最初の例のように列全体を$付きで書く形です。範囲が動いていなければ、下の行のコードだけが対応表に無いか、4や5の状態になっています。

4. 数値と文字列が混ざると、見た目が同じでも一致しません

コードが10231のような数字だけの値だと、片方のタブでは数値、もう片方では文字列になっていることがあります。見た目では区別がつきません。

見分けるより試す方が早いです。D2をTO_TEXTで文字列にして一致すれば、型の違いが原因と見ていいです。TO_TEXTは表示形式のままの文字にするので、ゼロ埋めなどの表示をしている列では、そこも合わせてから試します。

=VLOOKUP(TO_TEXT(D2), 'キャンペーン対応表'!$A:$C, 2, FALSE)

TO_TEXTで一致しなければ、逆にVALUE(D2)で数値にして試します。VALUEは変換できない文字列だとエラーになるので、コードに英字が混ざっている列には使えません。

5. 前後の空白と全角半角は別の値です

「CP-09」と末尾に空白が付いた「CP-09 」は、VLOOKUPでは別の値です。画面では見分けがつきません。前後のスペースを消すのがTRIMです。全角の「CP」と半角の「CP」も別で、ASCは全角の英数字とカタカナを半角にします。

=VLOOKUP(TRIM(ASC(D2)), 'キャンペーン対応表'!$A:$C, 2, FALSE)

D2の側だけ直しても、対応表の側に空白が残っていれば一致しないので、対応表の列にTRIMをかけた作業列を足すか、対応表の値そのものを直します。

6. 対応表にその値が無いか、2行あるかを見ます

ここまでで直らなければ、原因は対応表の中身です。コードが対応表に無ければ#N/Aになるのが正しい動きで、対応表に行を足せば消えます。もう1つは、同じコードが2行あるときに起きます。VLOOKUPは先に見つかった行の値を返すので、2行目は無かったことになり、「違う値が出る」の最後の候補がこれです。

対応表のタブを開いて目で見るのが確実です。SheetPeekというChrome拡張を入れておけば、数式のセルを選んだまま、対応表の見出しと先頭の数行が画面の横に出ます。

IFERRORで隠すのは、原因を見つけてからにします

IFERRORやIFNAで#N/Aを空欄にしている式を引き継ぐと、#N/Aが出ていること自体が見えなくなります。IFNAが置き換えるのは#N/Aだけで、IFERRORはすべてのエラーが対象です。私なら外す派です。原因が分かるまでは外しておいて、直ってから「対応表に無い」と分かる文字を返す形で付け直します。

XLOOKUPが使えるなら、最初から完全一致で動き、見つからないときに返す値を式の中に書けて、探す列が左端でなくても引けます。1と2とIFNAの包み直しが、この1本で済む形です。

=XLOOKUP(D2, 'キャンペーン対応表'!$A:$A, 'キャンペーン対応表'!$B:$B, "対応表に無い")

数式の動きは、次の公式ヘルプで確かめました(2026-10-06)。


SheetPeekはChromeウェブストアで公開しています。入れるとGoogleスプレッドシートの画面にパネルが出て、数式の入ったセルを選ぶだけで動きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?