• 締切済み

関数について

Vlookup関数でわからなくて困っています。 例) A B C D 顧客名1 #N/A 顧客名1 1001 顧客名2 #N/A 顧客名2 1002 B1=Vlookup(A1,$C$1:$D$2,2,0) B2=下フィル 各セルの書式は標準になっています。 A列とC列の抽出の仕方に問題があるのでしょうか。 因みに、C列をそのままコピーして、A列のところにもってきた場合には、B1には「1001」と表示されます。どうすれば表示されるようになりますでしょうか。 大変困っております。お力を頂きたくお願い致します。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

A列が別関数で設定されている場合、余分なスペース等が混入してい事も想定できますので次の方法をお試し下さい。 =Vlookup(TRIM(A1),$C$1:$D$2,2,FALSE)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

原因は明らかです 試しに下記の式をセルE1へコピーしてみてください =IF(EXACT(A1,C1),"o","x") xが表示されるとA1の文字列とC1の文字列は同じではないため Vlookup関数ではエラー(#N/A)になります 例えば "1"と"1"は違います "(株)富士"と"(株)富士"は違います "富士 太郎"と"富士 太郎"は違います 全部、半角全角の違いがあります 一番下はわかりにくいかもしれませんが 苗字と名前間のスペースが全角一文字と半角二文字の違いがあります 即ち >C列をそのままコピーして、A列のところにもってきた場合には、B1には「1001」と表示されます にあるように、全く同じでないとVlookup関数は成立しません

回答No.4

> =substitute(A1,"","") 検索文字列も置換文字列も空では、何も変わりません。Masa2072さ んの回答をよ~く見て下さい。" "を""に置換するんですよ。もっ とも、文字列の前後に余計な空白がある程度なら、trim関数の方が 速いですけどね。全角半角の区別無くきれいに消えますから。 とにかく一度C列をきれいに掃除してやれば、ウマくいくと思いま すよ。 また、vlookup関数ならなんでもソートしないとってのは間違いで す。最後の引数が0なら完全一致なので、ソートの必要はありませ ん。0以外のときはソートが必要です。

igu0625
質問者

お礼

ありがとうございます。 A列,C列にそれぞれ、=substitute(A1," ",""),=substitute(C1," ","")とし、作業列を作りました。そして同じようにvlookupをしても#N/Aとなります。 原因がさっぱりわかりません。他に何か考えられることがあれば教えて下さい。 よろしくお願いします。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.3

私もANo2さんの意見の通りだと思います。 このような入力ミスでも検索できるように =VLOOKUP(SUBSTITUTE(ASC(A1)," ",""),$C$1:$D$2,2,0) とある程度の事前対策も可能です。 上記の式はASCで空白や英数カタカナなどの全角文字を半角文字に置き換えて、SUBSTITUTEで空白を取り除いています。 ※実際の顧客名でカタカナを利用されるケースでは逆に一致しなくなります。 予め検索されるデータ側にもASCで半角文字に変換した顧客名の列を追加しておき、そこを検索するとカナ混じりの名前にも対応可能です。

igu0625
質問者

お礼

ありがとうございます。 A列、C列にそれぞれ、作業列を作り,共に=substitute(A1,"",""),=substitute(C1,"","")としました。 漢字とひらがなだけのセルには=substitute(asc(A1),"","")として、同じものをC列にも入力しました。 しかし、やはり表示は#N/Aです。 基のデータは顧客名でソートをかけてあります。

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.2

A列もしくは、C列「顧客名1」や「顧客名1_」(_は半角スペース)、「顧客名1□□□」(□は全角スペース)などになっていて、正常にマッチングが取れていないのではないでしょうか? また、VLOOKUPでの範囲(例ではC1:D2)はキーとなる1列目(C列)でソートされていなければならないと言うことも合わせてご確認ください。

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

顧客名1とかにどういうデータが入力されているかわかりませんが、C列をそのままコピーして、A列のところにもってきた場合には正しく表示されるということは、A列C列に元々入力されているデータが微妙に違うのではと思います。半角全角は区別しなければいけませんので、そのあたりが関わっているのではないですか?

関連するQ&A