リード一覧のタブに、キャンペーンコードからキャンペーン名を引く列があるとします。対応表は別のタブにあります。
=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)。
- VLOOKUP: https://support.google.com/docs/answer/3093318?hl=ja
- XLOOKUP: https://support.google.com/docs/answer/12405947?hl=ja
SheetPeekはChromeウェブストアで公開しています。入れるとGoogleスプレッドシートの画面にパネルが出て、数式の入ったセルを選ぶだけで動きます。