• ベストアンサー

エクセルのVLOOKUP関数で・・・

3時間ほど色々頑張ったのですが、もうお手上げなので教えて下さい・・・。 エクセルでシートが2つあり、シート2から一致するデータのみをシート1に持って行きたいのです。 具体的にはシート1には「F列/カナ氏名・G列/漢字氏名・H列/顧客番号・I列/生年月日」が設定されています。 ただしH列には顧客番号が入力されていません。 シート2より生年月日をキーにして引っ張ってくる予定です。 シート1には1000件データがあり、シート2に載っている該当者が200件程ヒットする予定です。 シート2には「A列/生年月日・B列/カナ氏名・C列/漢字氏名・E列/顧客番号」が設定されています。 仮に1行目からデータが入っているものとして、シート1のH1のセルに次の式を入れました。 =VLOOKUP(I1,'シート2'!範囲,5,FALSE) 範囲には実際の範囲を指定し、5列目がシート2の生年月日なので合ってると思うのですが・・・。 エラーは#N/Aというのが出てしまいます。 何処に問題があるのか分かりません。 説明が下手かもしれませんが、分かる方教えて下さい!

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

  • ベストアンサー
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.10

こんにちは、#1です。  同様なケースの解決方法が載っているサイトを見つけました。  「検索関数で検索値が見つからない」の「B.表示形式は文字列であるが、データは数値と認識されていることがあります。」の項です。 では。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_keisan.html#susiki-hyouji
minami1764
質問者

お礼

本当にありがとうございます!! 教えていただいたサイトの解決方法を試したらビンゴでした☆ 丸1日もやもやしていた気分がやっと晴れました! また分からないことがあったらよろしくお願いします。

その他の回答 (9)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.9

#7です。 >エラーは上がらなかったのですが、これで何か分かりますか・・・? 問題は数式ではなく入力値のようですね。 I1への実際の入力内容とセルの書式設定の表示形式を教えてください。 たぶん、数式を一工夫することでエラーを回避できると思います。

minami1764
質問者

お礼

ありがとうございます。 #10さんに教えていただいたサイトで無事に表示出来ました! 皆さんのおかげで助かりました!

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.8

こんにちは。#1です。  検索する表をソートする必要があるのは最後の引数がTRUEのときです。  また、前回の回答に書いた「試しに一行だけ、生年月日をシート1からシート2にコピーして見て結果を確認してください。」はやってみましたか。  これをやれば、少なくとも一行は一致するはずなので、データが悪いのか式が悪いのかの切り分けになりますので、やってみてください。 では。

minami1764
質問者

お礼

あの、ご提案どおりやってみたのですが、初歩的なことを聞いても良いですか? シート1の生年月日はセルの左上に三角マークが何故かついちゃってます。 文字列で設定してないのに「数値が文字列として保存されています」とコメントが出て、設定で文字列を変更させようとしても解除出来ません・・・。 これが原因なのでしょうか? シート2の生年月日は文字列の認識がされていないようで、三角マークはありません・・・。 つまりデータが悪いみたいですね! とは言っても、シート1の生年月日の書式が変わらない(泣)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.7

#NAはI1がシート2の範囲の左端の列に存在しない為のエラーです。 ここで確認、生年月日はどのように入力されてますか? 文字列?シリアル値を表示形式で年月日表示、それをあわせないと駄目ですよ? 試しにI1に「="シート2'!範囲の左端のセル座標」としても#N/Aが出ますか? 確認してください。

minami1764
質問者

お礼

>試しにI1に「="シート2'!範囲の左端のセル座標」としても#N/Aが出ますか? やってみました。 エラーは上がらなかったのですが、これで何か分かりますか・・・? そんなに難しいものではないと思うのですが、ここまで出来ないと自信がなくなってきます(泣)

  • NIWAKA_0
  • ベストアンサー率28% (508/1790)
回答No.6

え~っとつまり、 「シート1に生年月日を入れると、シート2から同じ生年月日のひとを探してきて、  その顧客番号を引っ張る」ってことでいいんでしょうか。 LOOKUP系使うと、同じ生年月日の人がいた場合、 一人しか引っ張ってこないと思うのですが・・・ 生年月日が同じ顧客はいないという前提なのでしょうか。 で、シート1のH列に出したいのは、「(シート2に入ってる)顧客番号」ですよね? >5列目がシート2の生年月日なので 生年月日は参照値だから、「範囲」の中の1列目ですよね? 5列目は「顧客番号」ですよね? また、シート2のデータは、生年月日順に並んでいますよね? 験しにLOOKUP関数でやってみては? =LOOKUP(検索値(=シート1の生年月日),検査範囲(=シート2の生年月日),対応範囲(=シート2の顧客番号)) 同じ生年月日の人がいる、というなら、 シート2で一列増やして例えばF列に =(A1&B1) のように、検索用に「生年月日+カナ氏名」の項目を作り、 シート1の顧客番号表示欄に =LOOKUP(I1&F1,シート2!F:F,シート2!E:E) のようにすれば良いかと思います。 これで生年月日とカナ氏名の組み合わせが一致しないと引っかからなくなります。

minami1764
質問者

補足

>「シート1に生年月日を入れると、シート2から同じ生年月日のひとを探してきて、その顧客番号を引っ張る」ってことでいいんでしょうか。 えっと、シート1のI列にはすでに生年月日が入力された状態なのです。 I列に限らずAからDA列までデータが入っていて、H列のみ空いているのでそこに引っ張ってきた顧客番号を表示させたいのです・・・。 >で、シート1のH列に出したいのは、「(シート2に入ってる)顧客番号」ですよね? はい、その通りです。 >また、シート2のデータは、生年月日順に並んでいますよね? えっ!?・・・あの、初歩的な質問なんですけど、生年月日順に並んでないとダメなのですか?! 並んでません(泣)早速並び替えさせます!! 他にもやり方をご提示していただいたので、早速試してみます!

  • mgkg
  • ベストアンサー率37% (79/212)
回答No.5

ごめんなさい、 =VLOOKUP(I1,'シート2'!範囲,4,FALSE)でした。 列番号を4にしてみてください。

minami1764
質問者

お礼

うーん、4でもダメでした・・・。 どこか根本的に問題がある気がしてきました。 データ自体がおかしいのかなぁ。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.4

こんにちは。  生年月日の入力は両方のシートとも同じ方法ですか?  たとえば、「'1980/01/01」として入力してもシート上は「1990/01/01」となります。  試しに一行だけ、生年月日をシート1からシート2にコピーして見て結果を確認してください。  私の環境では、上記の式でうまくいきました。 では。

minami1764
質問者

お礼

なるほど・・・。 確かに「’」を頭につけて数字を打っても一見すると分かりませんよね。 実際にそのセルをクリックすると「’」がついた状態で入力されたのか分かるみたいなので試してみました。 ・・・残念ながらシート1・2とも頭に「’」は付いてませんでした。 あーあ、原始的な方法で地道にやるしかないのかな(泣)

回答No.3

#N/Aのエラーは「使用する値がない」というエラーです。 シート1の生年月日とシート2の生年月日は同じ書式ですか? (セルの書式設定のことではなく、値として同じかどうかです) シート1が06/12/10でシート2が2006/12/10だったとすると それは一致しませんよ。 あと、蛇足かもしれませんが、生年月日をキーにして 顧客番号を引っ張るというのは怖いですね。 なぜなら生年月日は重複する可能性があるからです。 本来ならば、重複する可能性の無い顧客番号をキーにして シート(テーブル)同士を関連付けるべきです。

minami1764
質問者

お礼

はい。シート1・2の生年月日の書式は一緒です・・・。 どちらも「19750401」の様に合わせました。 シート1のデータは新規に顧客となる方達なのですが、以前に顧客だった可能性がある方がいらっしゃるのです。 そこでシート2の過去データと付き合わせて、過去に顧客番号を振っていたらそれを継続させて使わせたいのです・・・。 生年月日が重複する可能性は確かにあります。 それはどうしようかな、と確かに考えていました(汗)

  • mgkg
  • ベストアンサー率37% (79/212)
回答No.2

顧客番号を検索するんですね? =VLOOKUP(I1,'シート2'!範囲,5,FALSE)の列番号を5から1に変えてみてください。 =VLOOKUP(I1,'シート2'!範囲,1,FALSE)です。

minami1764
質問者

お礼

・・・試してみましたがダメでした(泣) はい。生年月日をキーにして、一致する顧客番号を表示させたいのです。 何でエラーなのでしょう? 確実に該当者はいるはずなのに、1件もヒットしないのです・・・。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

=VLOOKUP(I1,'シート2'!範囲,5,FALSE) のFALSEを0,1,2に変更してみて下さい。 それぞれ違う値になると思いますが、ご希望の値になるものはありますか?

minami1764
質問者

お礼

=VLOOKUP(I1,'シート2'!範囲,5,0,1,2)ですか・・・? 試してみたのですが、「入力した数式は正しくありません」とメッセージが出てしまいます(泣) はぁ~、エクセルに挫折しそうです。

関連するQ&A

  • エクセル2007 データ抽出(関数)について

    教えてください。エクセルシートにて郵便番号と住所が重複しているデータを抽出したいのです。 例)ある顧客の情報として、シート1のA列に、1から10までの新規顧客の氏名、B列には生年月日が入力されています。C列,D列は空白で、E列には全ての顧客(新規顧客を含みます)の氏名、F列には生年月日、G列には郵便番号、H列には住所が入力されています。このふたつの情報の中から、新規顧客データと全ての顧客データの氏名、生年月日が重複している顧客のみ、C列にその郵便番号、D列に住所を表示させたいのです。 OSはXP エクセル2007です。 困っています。よろしくお願いします。

  • excel vlookup関数で

    とあるセル(例えばH2)に、別シートのデータの名前か顧客番号を入力すると、E4セルに名前、E6セルに顧客番号が表示されるようにしたいのですが、過去ログを見てもどうにもやり方がわかりません。 vlookupでデータの左端の列にある顧客番号を入力して表示させるだけなら当然できるんですが、2列目にある名前を入力した時も表示させる事は可能でしょうか。 回答よろしくおねがいします。

  • エクセルVLOOKUP関数を使用して、

    別シートのデータの複数列分を抽出したい、 Sheet1の列1~2、列3~4 …列15~16で8組の列です、各々奇数列は会員番号、偶数列は氏名です。(通常はsheet1データーが1組の列であるが、これだと件数多いため、複数列にしてます) これらのデーターをsheet2に抽出したく、sheet2の列1に会員番号入力すれば列2に氏名が出てくる このような場合どのように式を作れば良いのか、どなたさんかお教えいただければと思います。

  • VLOOKUP関数:別シートにある参照範囲が変動する場合

    スポーツクラブで学童会員の名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、データが入力されているのは  2行目からです。 ・別シートのデータを参照するため、シート2のデータが入力されて  いる範囲に「参照範囲1」という範囲名をつけました。 【状況】 現在設定している数式は B2=VLOOKUP(A2,参照範囲1,2,FALSE) なのですが、以下の場合は「参照範囲1」で設定した範囲とは 異なる範囲のデータを参照しなければなりません。 ・入会者がいる場合:データを追加するため、行が増える ・退会者がいる場合:データを削除しブランクを解消するため、  行が減る 【質問】 上記状況の場合、VLOOKUP関数に加えてどのような関数を使用すれば 別シートにある参照範囲の変動に対応できるのでしょうか? 会員が増減するたびに、新たに参照範囲を設定し範囲名をつけ直す という作業は避けたいのですが・・・ ご教示いただけますよう、何卒宜しくお願い申し上げます。

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • アクセスでの同姓同名の抽出について

    お世話になります。 アクセスで顧客データ(漢字氏名、カナ氏名、生年月日、住所)を管理しています(16000件程度) その中で、同姓同名(カナが同じ人)のデータのみをピックアップしたいのですが、どうしたらよいでしょうか? 流石にデータをカナ順に並び替えて全部プリントアウトして調べるのはあほくさいし・・・。 どなたかご存じの方よろしくお願いします。

  • Excelで抽出

    初めまして。よろしくお願いします。 Excel2000を使っています。 例えば、 A列     B列   C列   D列 お客様番号  氏名   契約日  生年月日  :      :    :    : という表があるとし、データは2000件ほどあると 思ってください。 1行目から最終行までみて、 『同一氏名』&『同一契約日』&『同一生年月日』の ものを違うシートに表示させたいのですが、 こういうことってExcelで出来るのですか? 出来るのであれば是非教えてください。 質問するのは初めてなので お手柔らかに・・・m(__)m

  • VLOOKUP関数について

    シート1のA列の氏名を検索値とし、シート2の範囲を範囲とし、列番号5、検索の型FALSEとして シート1にシート2の検索値を表示させていますが、シート2にシート1の氏名がない場合は#N/Aのエラーが表示されます、これを 0 か ヌル で表示させる方法はありませんでしょうか。よろしくお願いいたします。

  • VLOOKUP関数が数式として認識されません!

    スポーツクラブの学童会員名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、実際のデータが入っている  部分はA2:D20です。 ・シート1、シート2の全データは文字列として書式設定しています。 【状況】 学年を検索するための数式をシート1のB2に以下のとおり 入力しました。  =VLOOKUP(A2,参照データ!$A$2:$D$20,2,0) ところが、B2セルには正常な値(学年)が表示されずに 上記の数式がそのまま表示されてしまうのです。 A2に会員番号を入力してもB2の表示は変わりません。 本やウェブで解決方法を調べてみましたが、一向にわからず 困り果てております。 私はエクセル初心者なので一般的にはくだらない質問かも しれませんが、何卒ご教示くださいませ。

  • エクセルのVLOOKUP関数について

    こんにちは。vlookup関数を使用したのですが、うまく値が引っ張って来れません。 別シートの範囲の一番左のデータは電話番号で、電話番号を参照して横列の値を引っ張ってきたいのですが、電話番号を検索セルに手入力でうちこんだらエラーになり元範囲の電話番号をコピーしてペーストすると反映されます。もちろん半角、全角チェックしてます。 元の範囲の電話番号をうち直すと、きちんと反映されます。 書式設定で、範囲のデータを「標準」にしてみたり 試行錯誤の上、分からないので、どなたか分かる方、助けて下さい。よろしくお願いします。

専門家に質問してみよう