• ベストアンサー

エクセルのif関数のエラー

エクセルでif関数を使ってデータ処理をしたのですが、上手くいき ません。何がおかしいのかが分からない状態で困っています。 状況  A B C D E 1 : + = ? 関数式 とセルに入力してあるとします。(A1=:,B1=+,C1==,D1=?) 関数式のセルに以下の様に入力しました。 =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) 目的はVLOOKUPだけではD1が空白の時にE1にNAMEと表示されるのを 避ける事でした。 そうすうとD1にA列の数字を入力すると、それに対するB列をE1に 表示するようになるのですが、D1が空白の時はB1が表示されて しまってます。  また一旦D1に入力した後、D1をデリートして空白にしてもE1には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1=:,B1=+,C1==,D1=? このように説明されていますが何を意味しているの理解できません。 関数式はD1に入力してとのことで =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) を示しておられますがこのままでは#NAME?が表示されるのは関数式が正しくないからです。 初めにISBRANKはISBLANKの間違いですね。また、E1=""は間違いですね。IF 関数はD1が空白のときはE1を空白にしなさいとなるのですが、E1セルに式を書かれているのですから単に""とすればよく。関数を使ってE1セルを空白にしなさいとの指令を他のセルから行うことはできません。そのセルを空白にしたければそのセルに関数式を入力しておくことが必要です。 VLOOKUP関数の引数となるセルの範囲には$A$1:$B$15とセル番地の間に:を付けることが必要です。 FALSEとTRUEの使い方は、ここではA列でのデータが昇順に並べられているときにのみTRUEが使えますが通常はFALSEのままでよいでしょう。 D1セルへの入力の式は次の式でよいと思いますね。 =IF(ISBLANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1:$B$15,2,FALSE)) または =IF(D1="","",VLOOKUP(D1,$A$1$B$15,2,FALSE))

katotyan2
質問者

お礼

早速のご回答に感謝致します。 説明文が上手く表現できずに失礼致しました。 #NAME?が表示されるのは、数式が正しくないからなのですね。 また詳しいご説明に感謝致します。  ご指摘の通り修正しましたら、上手く処理できました。

その他の回答 (2)

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

突込みどころ満載です >=IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) #1さんも言われている「E1=""」は「""」 範囲指定の間違い「$A$1$B$15」は「$A$1:$B$15」:が抜けてる 「ISBRANK」は「ISBLANK」では 「FALSE」は「TRUE」の方が良いと思いますが =IF(ISBLANK(D1)=TRUE,"",VLOOKUP(D1,$A$1:$B$15,2,TRUE)) こういうことがしたいのでは? しかし、定番は =IF(COUNTIF($A$1:$A$15,D1)=0,"",VLOOKUP(D1,$A$1:$B$15,2,TRUE)) この様な感じになると思いますが、どうでしょうか? 以上 参考まで

katotyan2
質問者

お礼

早速のご回答に感謝致します。 修正してみたら上手くいきました。非常に勉強になりました。 ありがとうございました。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

=IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) この式をE1に記入するのでしたら E1="" を""にする。 Excelの式は自分自身以外のセルの値を変えることはありませんからE1=は不要です。

katotyan2
質問者

お礼

ご回答ありがとうございます。

関連するQ&A