• ベストアンサー

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

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

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

  • ベストアンサー
  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

まず、電話番号を入力するときは頭に'(アポストロフィー shift+7キーで入力できます)をつけて、文字列として入力すればエラーにはなりません。市外局番でも携帯番号でも、またフリーダイヤルでも1桁目が0ですからね。この方がいいでしょう。 このとき、xxx-xxx-xxxx とか xxx(xxx)xxxx のようにハイフンやカッコはつけない方がいいかも。どうしても付けたい場合は、セルの書式の表示形式を使ってください。 とここまでは、分からなければ無視してもいいです。 ここからが本題ですが、vlookup関数を使う場合は、検索する列(この場合は電話番号の入っている列)が、昇順に並んでいる必要があります。うまくいかないのは、多分、このためだと思います。並べ替えても大丈夫な場合は、並べ替えを実行してみてください。 並べ替えできないときは、作業列を作るなりして工夫する必要があるでしょう。

moke
質問者

お礼

ありがとうございます。電話番号の場合、全国で市外局番の数が違いますよね。例えば東京(03)神戸(078)のように。こういう場合、表示形式はどう設定するんでしょうか。すみません。補足ですが気になったので。 vlookupですが、昇順でちゃんと並べ替えてるんです。でもできない。空白セルとかあったらダメですよね。

その他の回答 (2)

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

まず確認、電話番号は数値ですか文字列ですか? 検索セルと元範囲の設定は同一にする必要があります。 文字列で数値(又はその逆)の検索はできません。 数字だけの入力だと良くあることです。 電話番号の様に先頭に0がある場合、表示書式を文字列にする方法になります。 現在あるリストが数値と文字が混ざっている場合は統一が必要です。 =IF(ISTEXT(A1),A1,TEXT(A1,"0000000000")) にすれば文字列はそのまま、数値は10桁の文字列になります。 これをコピーして値として貼り付けてください。 また、このような方法もあります。 元範囲の電話番号の列を 「挿入」「名前」「定義」で名前付け(電話番号)して 検索セルにて、「データ」「入力規則」の「設定」タブで 入力値の種類を「リスト」元の値を「=電話番号」にします。 検索セルにカーソルを合わせると▼が表示されるので そこから電話番号を選択してください。

moke
質問者

お礼

ありがとうございます。電話番号は文字列です。念のため、お教えいただいた式を使って、データを統一しなおしてみました。 入力規則を使用する方法は、今回の場合、あまりに範囲のデータが多すぎるので実用的ではありません。 でもその方法は、今後何かの際にとても役立ちそうです。いろいろと大変参考になりました。 ありがとうございます。

moke
質問者

補足

すみません。補足とお礼が逆になってしまいましたが、ハイフンを削除してデータをmshr1962様がおっしゃったように文字列に統一したら、うまくいきました。 皆様のおかげで本当に助かりました。 ありがとうございます。

  • shiga_3
  • ベストアンサー率64% (978/1526)
回答No.1

う~ん、一覧の番号と入力した番号がどこか違うのでしょうね。 ためしに適当なセルに =IF(「参照元のセル」=「入力欄のセル」,"○","×")と入力してみて「×」になればどこかが違うはずです。考えつくのはスペースや改行ぐらいですが、いかがでしょうか。

moke
質問者

お礼

ありがとうございます。入力したデータとどこか違うんですよね。でも何が違うんでしょうね。