こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel2007】VLOOKUP

関数結果がエラーになってしまい困っています。

65000行分の商品リストシートに、別シートで作成したその商品に該当する区分を
VLOOKUP関数で抽出しようとしたのですが、上手くいきません。

検索して欲しいJ2(文字列)と合致した情報は
シート「データ」C列にあり、C列をもとに抽出して欲しい情報は選択した範囲の
左から5番目の列にあります。(全て文字列)
ということで下記の関数を作成しましたが検索結果が空白で出てきません。

=IFERROR(VLOOKUP(J2&"",データ!$C$3:$G$12048,5,FALSE),"")

文字列前後に余分な空白・全角半角に相違はないのですが、
他に対処しなければならないことは何があるかお教えいただけないでしょうか。
とても困っています、恐れ入りますがどうぞ宜しくお願い申し上げます。

投稿日時 - 2012-07-27 10:24:41

QNo.7613063

すぐに回答ほしいです

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

そもそも、なぜ「&""」をつけないといけないのでしょう。
ご自分で意味を理解して付けられているのですか?

例えば、データシートの方のC列が文字列データで、検索値のJ列が数値データだったとすると、「J2&""」とすることでJ2のデータを文字列に変換しデータを合致させるという事でしたら理解できます。

ですが、

>J2(文字列)
>左から5番目の列にあります。(全て文字列)

とあるように、データはすべて文字列なのではないのですか?

でも、補足にあるように「&""」を外すと#N/Aが出るという事はやはりデータ型が違うのだと思います。

多分、データシートのC列の方が文字列でないのでは?
実際のデータがわかりませんので何とも言えませんが、表示形式を変えただけではデータ型までは変わりません。

データシートのC列を選択し、データ→区切り位置→次へ→次へ→列のデータ形式を「文字列」にチェック→完了

としてみてください。

後は表示形式で文字と数字が混在しているから文字列だと思っていたけど実はユーザー定義などでそう見えていただけで実際のデータは数値だった、などという事もありますのでそちらも調べてみて下さい。

投稿日時 - 2012-07-27 13:07:39

お礼

アドバイスありがとうございます。
「&""」は類似した関数を使用した際のもので同じように文字列云々の際に入れて解決したので同様に入れていたものです、申し訳ありません。

>「&""」を外すと#N/Aが出るという事はやはりデータ型が違う
>データシートのC列を選択し、データ→区切り位置→次へ→次へ→列のデータ形式を「文字列」にチェック→完了
>実はユーザー定義などで~

ご丁寧にありがとうございます、「&""」を外すと#N/Aと出てきてしまうのでC列のデータ形式をご指摘通り操作し、ユーザー定義があるかどうかも確認いたしましたがやはり出てきません…

検索値と範囲を範囲ではなく行全体にしたら値が出てきましたので一旦はこちらで解決しそうです。
=VLOOKUP(J:J,新帳合!D:G,4,0)

諸々ご協力いただきありがとうございました、本当に助かりました。

投稿日時 - 2012-07-27 14:34:31

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

ちょっとだけフォロー、
これの方がちょっとだけいいでしょう。

=IF(J2="","",IFERROR(VLOOKUP(J2,データ!$C$3:$G$65002,5,FALSE),""))

おまけ、
やはり、数値だとタイプが変換されてアカンですね。一致しない!
A1に「11」
B1に =A1&""
「=A1=B1」 の結果は「 FALSE」になった。

<参考URL>
http://okwave.jp/qa/q7613120.html

投稿日時 - 2012-07-27 12:35:33

お礼

諸々参考URL等ありがとうございます、&""は不要なのですね…知識不足で申し訳ありません。類似した関数を使用した際のものなので削除いたします。
再度追記していただいた関数ですと元のデータの何かがいけないのかやはり空白になってしまいます…
検索値と範囲を範囲ではなく行全体にしたら値が出てきましたので一旦はこちらで解決しそうです!
=VLOOKUP(J:J,新帳合!D:G,4,0)
何度もアドバイスいただいたのに申し訳ありません、ありがとうございました!
教えていただいたサイト知らなかったので今後の勉強に使わせていただきます!

投稿日時 - 2012-07-27 14:17:41

ANo.3

>=IFERROR(VLOOKUP(J2&"",データ!$C$3:$G$12048,5,FALSE),"")
なんか良さげですが、やっぱ、「J2&""」、これがアカンようですね!(IFERROR、便利だね!、家にも欲しい!!)

=IFERROR(VLOOKUP(J2,データ!$C$3:$G$65002,5,FALSE),"")

こう書くべきでしょう!!

「IFERROR関数でVLOOKUP関数の#N/Aエラーを回避」
http://www.becoolusers.com/excel/iferror-vlookup.html

投稿日時 - 2012-07-27 11:29:27

お礼

連続でアドバイスありがとうございます!そして申し訳ありません、結果の値が空白になってしまうのでNo.4のアドバイスも参考にさせていただきます。

投稿日時 - 2012-07-27 13:31:54

ANo.2

数式は間違えていないようです。
(実際IFERRORが働いて""を返しているように見受けます。)

ということは、J2の値とシート「データ」のC列にある値が同一ではないと見受けられます。

セルの設定等で同じく見えてもセルに格納されている値が違うと違う値と判定されますので今一度ご確認くださいね。
(文字列のセルに数値を入れても、数値セルの数値と一致しなかった記憶があります。)

投稿日時 - 2012-07-27 10:50:12

お礼

ご確認いただきありがとうございます!
>セルの設定等で同じく見えてもセルに格納されている値が違うと違う値と判定されますので~
アドバイスの通り、検索する側のシート「データ」の情報をまるまるコピーして再度様子をみてみたのですがやはりエラーのままのようで行き詰っております…他に確認できる情報があればお教えいただけますと助かります。

投稿日時 - 2012-07-27 11:17:20

ANo.1

とりあえず、以下の式でやってみて下さい。
=VLOOKUP(J2,データ!$C$3:$G$12048,5,FALSE)

投稿日時 - 2012-07-27 10:35:03

お礼

早速ありがとうございます、添付関数で試しましたが「#N/A」の値が返ってきてしまいます。
検索値が見つからないというエラー値かと思いますが原因がわかりません。
解決方法はあるのでしょうか…申し訳ありません、宜しくお願い申し上げます。

投稿日時 - 2012-07-27 11:10:41

あなたにオススメの質問