• ベストアンサー

Excel関数「VLOOKUP」でエラーが出る理由

質問させて頂きます。 ここに、ふたつの似通ったBookファイル(Book1、Book2)があると仮定します。 内容はふたつとも、2桁~5桁の数字が、A列に5000行くらいまで打ち込まれている物です。 (※正確に言うと、Book1には4500行、Book2には5000行、数字が打ち込まれています) 例) 22 278 599 8819 33119 70994・・・等(こういった内容が5000行くらいまで続きます) Book1とBook2の数字を突き合せ、重複がないかどうか調べたいのですが、 関数『VLOOKUP』で両ファイルを突き合わせようとすると、 なぜか、エラー値『#N/A』が出てきてしまいます。 ご存知の通り、エラー値『#N/A』は「値がない」という意味なので、 ある意味、「この数字は重複していない」という意味でも取れると思うのですが、 明らかに重複している数字に対しても、エラー値が出てきてしまうので、困っています。 おそらく、私の『VLOOKUP』での突き合わせ方法に原因があると思うのですが、 どこに原因があるのかがわかりません。 【私の突き合わせ方法】 (1).Book2のB列に「×」と書いたセルを挿入します。 (2).Book1のB列にVLOOKUPを使用し、下記のように設定します。   検索値:A1    範囲:[Book2]Sheet1!$A$1:$B$5000   列番号:2  検索の型:FALSE こうする事で、「重複していたら"×"を出す」という形にしようと思っていました。 しかしなぜか、すべて『#N/A』となってしまいます。 何度も言うようで大変恐縮ですが、「明らかに重複している数字」に対しても、 「×」ではなく、『#N/A』が出てきます。両数字は、セルの表示形式からなにからすべて一緒です。 エクセルの検索機能を使うと、ちゃんと検索結果に出てきます。にも関わらず『#N/A』が出るのです。 これにはどういった原因があるのでしょうか? ご回答、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。KenKen_SP です。 恐らく #1 の mike_g さんのご指摘のとおり、文字列の数字なのだと 思います。試しに TYPE 関数でデータ型を見てみると良いと思います。 適当なセルに次の式を入力します。 = TYPE(データ型を調べるセル) この結果で 2 が返ってくるようであれば、文字列の数字ですね。 その場合は、まず数値化あるいは文字列化のいずれでも構いませんが、 比較するモノ同士のデータ型を一致させてやる必要があります。 現実的には数値で統一が一番手間がかかりません。数値化の手順は 1. 適当なセルに 1 を入力し、コピーする 2. 数値化するセルを範囲選択 3. [形式を指定して貼り付け] で [乗算] を選択し [OK] です。 ただ、重複値のチェックなら VLOOKUP関数よりも COUNTIF 関数の方が簡単 かもしれません。例えば、Book1 の B1 セルに次のような式に入力します。 = COUNTIF([Book2]Sheet1!$A$1:$A$5000,A1) これをデータ終端までフィルでコピーします。重複するものは 1 以上 の数が返されますので、オートフィルターなどで抽出することができます。

helpme0308
質問者

お礼

ご回答ありがとうございました。 とても丁寧で、読みやすかったので、 滞りなく、作業を終えることができました。 また機会がございましたら宜しくお願い致します。 この度は本当にありがとうございました。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

[No.1回答に対する補足]に対するコメント、 “標準”書式の場合、入力したデータが数値の場合は右詰めで、文字列の場合は左詰めで、“通常は”表示されます。しかしながら、数値でも文字列でも強制的に[左詰め]、[中央揃え]、[右詰め]に配置設定することが可能なので、通常どおりになっていないこともあります。 ただし、Access等からコピーして貼り付けた数字は気をつけなければなりませぬ。 何れにしても VLOOKUPする/されるデータの全てが文字列か数値に統一されていることを、=CELL("type",A1)関数で確認してみてください。右(左)詰めだけで判定するのはヤバイです。

helpme0308
質問者

お礼

解決方法のきっかけを与えて下さったことに、大変感謝しております。 おかげさまで無事、作業を終えることができました。 また機会がございましたら是非宜しくお願い致します。 この度は本当にありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

多分、数値と文字列の違いではないでしょうか? 数値の1と文字列の"1"は別のものとして判定されますから 現状のSheet1のA列に列挿入して位置をずらして B1=A1*1 とでもして下方にコピーしてください。その上で   検索値:A1*1    範囲:[Book2]Sheet1!$B$1:$C$5000   列番号:2  検索の型:FALSE とすれば大丈夫でしょう。

helpme0308
質問者

お礼

ご回答ありがとうございました。 おかげさまで無事、作業を終えることができました。 また機会がございましたら宜しくお願い致します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>表示形式を統一させれば解決しますか セルで見えているデータは (1)表示形式でそう見えているもの (2)セルの「値」 の区別が質問者自信はっきり認識してないようです。 関数はセルの「値」を見るや加工するものです。この点しっかり勉強してください。 この質問は入力前のセルの書式設定時のことなら、そうです、といえると思うが、入力してしまうと(入力後に考えるとき)そうでないときもある(日付など)ので、難しい点です。 ーーー 質問が長いが、VLOOKUP関数のエラーは (1)第2引数を絶対参照($つき)になっていない    本件はこの点OK (2)「値」が実は違っている    A.文字列と数値    B。余分なスペースなどの点で実は違う しかないと思います。論点チェック点をBに絞ってください。

helpme0308
質問者

お礼

ご回答ありがとうございました。 大変参考になりました。

noname#204879
noname#204879
回答No.1

例示されたように、数字を左詰で示されると、それらは数値でなく文字列だと解釈しそうになります。 「数字が打ち込まれています」とのことですが、本当のところは数値なのですか?それとも数字(文字列)なのですか? 数値(あるいは数字)範囲を数字(あるいは数値)で検索しても“ありません”(Not Available → N/A)となることはご存知ですか?

helpme0308
質問者

補足

さっそくのご回答、誠にありがとうございます。 Book1、Book2、ともに表記は「半角数字」で、 セルの書式設定での表示形式は「標準」にしています。 ただ、今のご回答で気になった点がひとつあります、 会社のデータなので、今は手元になく、確認ができないのですが、 mike_g様がおっしゃる通り、Book1、Book2、どちらかが「左詰め」でした。 もしかして、 「片方が"文字列での数字"で、もう片方が"数値での数字"」だから、 正確に突き合わせができないのでしょうか? もしそれが原因だとすると、両方とも表示形式を統一させれば解決しますか? ご回答、宜しくお願い致します。

関連するQ&A