エクセルでIF関数を使ってVLOOKUP関数を組み合わせる際に発生するエラーについて

このQ&Aのポイント
  • エクセルのIF関数とVLOOKUP関数を組み合わせて使用する際に、商品コードが空白の場合にエラー値が出る問題が発生しています。
  • この問題を解決するために、IF関数を使用して商品コードが空白の場合には商品名を空白と表示し、それ以外の場合にはVLOOKUP関数を実行するように設定しています。
  • しかし、オートフィルでコピーをすると正常に空白表示になるのに、2台のパソコンではエラー値が消えずに表示されてしまいます。エクセル自体に不具合が生じている可能性も考えられます。
回答を見る
  • ベストアンサー

エクセルでIF関数について

VLOOKUPとIF関数を組み合わせて計算した時の事なのですが。。。 VLOOKUP関数を使って商品コードを入れたら商品名がでるように 数式を作成しました。すると商品コードに値が入っていないと エラー値が出てしまいますよね?そこでIF関数を用いて商品コード欄に 値が入っていなければ、つまりは空白であれば商品名の欄には空白を 表示せよ、そうでなければVLOOKUP関数を実行せよというふうに組み合わせ たのですが・・・エラー値が消えないのです!! オートフィルでコピーをするとその下からはちゃんと正常に空白表示に なるのに・・・・! 私は講師をしているのですが、上記のような症状になるのは2台だけ であとのパソコンは正常です。ということはエクセル自体に不具合が 生じているのかな?と思ったりしました。ということはもう一度インスト するべき?など等考えたのですが、どなたかご指導お願いします!!

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>すると商品コードに値が入っていないとエラー値が出てしまいますよね? >そこでIF関数を用いて商品コード欄に値が入っていなければ、つまりは >空白であれば商品名の欄には空白を表示せよ、そうでなければVLOOKUP関数を >実行せよというふうに組み合わせたのですが・・・エラー値が消えないのです!! これをそのまま算式にすると、B2の値で、D2:E21を検索するとして、  (B2とD2:D21が商品コード、E2:E21が商品名になります)  =IF(B2="","",VLOOKUP(B2,$D$2:$E$21,2,FALSE)) になるのでしょうか。 これでは、B2=" " (スペース) だったり、商品コード一覧にない値の場合、#N/Aになってしまいます。 上の式で、B2=" " (スペース)で、オートフィルでコピーした時、B3以降がB3=""なら質問のような事象が起きることになります。 商品コードの入力の如何にかかわらす、#N/Aを回避するには、  =IF(ISNA(VLOOKUP(B2,$D$2:$E$21,2,FALSE)),"",VLOOKUP(B2,$D$2:$E$21,2,FALSE)) のようにする必要があると思います。

sakuramiti
質問者

お礼

なるほど!!私は計算式にばかり目が行ってしまっていて、そこは 確かめていませんでした。目からウロコとはこの事! そういう状態だったかどうかはわかりませんが、すごく参考になりました。 さっそく問題のパソコンでもやってみます!やはり自分だけで悩むよりは相談したほうがずーっと良いですね! 今回の質問でカルチャーショックを受けました(笑) 自分とは違う方向から見ている人の意見ってすごいっ!感動です! 自分の知識のなさも浮き彫りになりますが・・・・(笑) ありがとうざいます<(_ _)>

その他の回答 (1)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

「空白文字(スペース)」が入力されているセルと本当に何も入力されていない「ブランク」のセルを識別できるようにIF文が書かれていないのではないでしょうか。「ブランク」はisblank()関数で識別する必要がありますし、半角全角のスペースはtrim()関数で圧縮して識別する必要があります。

sakuramiti
質問者

お礼

回答ありがとうございます。自分はなんて頭の固い人間なの~と 思いました。もう考えが固執してしまっている自分に気づきましたよ。 ありがとうございます。視野も広がりました。早速試してみますっ!

関連するQ&A

  • エクセルの「IF+VLOOKUP」に関してのよくある問題で、意味のわからない相対参照があります

    「1.セル【C18】にセル【B18】の「商品コード」に対応する「商品名」を返す数式を入力して下さい。「商品一覧」の表を参照すること。 次に、「商品コード」が入力されていない場合は、「商品名」にエラーが表示されないように数式を修正して下さい。(シートに表があり、IF+VLOOKUPを使う問題です) 2.セル【C18】の数式をもとに請求書の表を完成させて下さい」(←「【C18】の下の行も同じように、商品コードから商品名を表示させれるように完成させなさい」っていう問題です) 上記のような問題があったのですが、 数式を入力して下にオートフィルして 完成させたのですが、【問題の解答】を見た限りでは 「セル【C18】を「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」と修正する」 と書いてありました。 ですが、数式の「$B18」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

  • エクセルのIF関数でVLOOKUPを論理式で

    こんにちは IF関数を勉強しています、過去の質問履歴のQNo.2489708を参考にさせて頂きましたが私の思うような結果が得られないので教えていただければと思います。 ■数式が=IF(A1="","",IF(VLOOKUP(A1,B3:B5,1,FALSE)=A1,C3,D3)) ■内容ですが 第1のIFで A1はブランクで真 偽の場合次のIF関数 第2のIFで 論理式を使い、A1の値がB3~B5の値と同じ場合と表現し       真の場合C3 偽の場合D3 C3のセルにはOK D3はNGと入っています ■結果  A1に入力した値とB3~B5の数字が合えば『OK』を返してくれるのですが  それ以外の場合のD3の値『NG』を返してくれなく#N/Aを返してきます。 数式がやはり違うのかなー  ■試した事  『OK』と『NG』をセルで指定しているのでここを単純に,"OK","NG"としてみましたが結果は同じでした・・・ ■合わせて  B3~B5のセル書式設定が文字列の場合(01234などの0を先頭に表示する場合セルの書式設定を文字列にしています)は特別な関数を入れ子するのでしょうか? ■いろいろ参考書を買って確認しましたが同じようなケースは無いようです。 ■VLOOKUPを使う理由  じつは、商品毎に別シートへ台帳を作り管理しています。  例えば、『シート名お菓子』に商品コードが無い場合『シート名飲料』を見に行く様にしたいのです。  商品はなるべくコード(数字)にしているのですが、0ゼロから始まる商品コードもあるので四苦八苦考えています・・・このIFとVLOOKUPを使うと幅が広がると思い夢を描いています。その他にMATCH関数でも考えましたが上手く結果が得られず困っています、どうぞ宜しくご教授ねがいます。

  • IF関数が長くて、実行できない。

    関数初心者です。Excel2003を使用しております。 ~目的~ IF関数が長くなり、実行することが出来ない。 VLOOKUP関数の複数範囲の中から検索できる数式を作成したい。 ~状況~ ・VLOOKUP関数で複数の範囲を指定している。 ・各範囲は_コード表という名前の定義付けをしており、_コード表1~12まである。 ・_コード表12までの複数範囲の中から検索できる数式を作成したい。 =IF(ISERROR(VLOOKUP(B5&"_"&C5&"_"&D5,_コード表1,5,0)),IF(ISERROR(VLOOKUP(B5&"_"&C5&"_"&D5,_コード表2,5,0)),IF(ISERROR(VLOOKUP(B5&"_"&C5&"_"&D5,_コード表3,5,0)),"",VLOOKUP(B5&"_"&C5&"_"&D5,_コード表3,5,0)),VLOOKUP(B5&"_"&C5&"_"&D5,_コード表2,5,0)),VLOOKUP(B5&"_"&C5&"_"&D5,_コード表1,5,0)) 上記の数式で検索が出来るのですが、 _コード表12までになると、関数が長すぎて実行できません。 何か良い方法はありませんでしょうか。 ご回答をお待ちしております。

  • エクセルIF関数について

    エクセルIF関数について A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。 という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。 IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか? どなたか教えてください。

  • VLOOKUP関数とIF関数

    VLOOKUP関数が全体的に見えてきません。何をこれでしたいのか? また、VLOOKUP関数でIF関数を使うところなのですが、これはエラーを表示させないために使用することは、理解できました。 しかし 「=IF」をここで使用することで、エラーがなくなるのでしょうか?

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

    今までの質問で探してみたのですが、解決できなかったので質問させていただきます。 IF関数とVLOOKUP関数を使って表を作成しています。 例えば… IF(A1="","",VLOOKUP(A1,Sheet2!A1:E10,3,0) としました。 表示させたい列番号の値が何も入力されていないとき、「0」となります。 何も入力されていないのだから、何も表示されないようにしたいのです。 間に合わせで、スペースキーで空白を入力した所、「0」が消えて空白(何も表示されない)表示されました。 結構な量の資料ですと、間に合わせで空白を入力するのは大変です… どなたか詳しい方、回答お願いします。

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • EXCELのIF関数で

     こんにちは。教えて下さい  ある範囲(C4:L4とします)の中にある空白の数によって、一定の数を返すような数式を作りたいのです。空白の数が、0で2、1で3、2で4、3で5、4で6、5で8、6で11、7で15、8で20、9で30、10で0という具合で、規則性はありません。IF関数とCOUNTBLANK関数を使って、次のような入れ子構造の数式を作りました。  =IF(COUNTBLANK(C4:L4)=0,2,IF(COUNTBLANK(C4:L4)=1,3,IF(COUNTBLANK(C4:L4)=2,4,IF(COUNTBLANK(C4:L4)・・・中略・・・IF(COUNTBLANK(C4:L4)=9,30,0))))))))))  最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。  ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が?  そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。  よろしくお願いいたします。

  • エクセルの関数VLOOKUPについて教えてください

    シート1に商品情報があり、シート2にプリントアウト用のフォームを作っています。 商品コードは数字が多いため商品コードの横に空白のセルを用意して、 そのセルに※を入力してシート2のフォームに表示しようとしています。 何度かVLOOKUPで試してみたんですがエラーが表示されます。 この場合はどういった関数にすれば上手く表示できますでしょうか、ご教授願います。

専門家に質問してみよう