• ベストアンサー

ISERROR関数?

こんにちは。 A列に100,200,300,400,500と数字がベタ打ちで表示されています。 B列には数式で表示させた数字、3100,3500,7800,9002,9900が表示されています。 いまC列に、B列の値が9000以上ならばA列の値を表示させようとしています。そうでなければ空欄にします。 (この例ならば、9002に対する400と9900に対する500が表示されることになります。) この場合の関数は=IF(ISERROR(B1>=9000),"",A1) では間違いなのでしょうか? 現状では、B列が3100であろうと9900であろうと、A列の値が表示されてしまいます。 よろしくお願いいたします。

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

  • ベストアンサー
noname#77845
noname#77845
回答No.1

> この場合の関数は=IF(ISERROR(B1>=9000),"",A1) > では間違いなのでしょうか? 間違いです。 B列の値が何であれ、結果は「TRUE」または「FALSE」になり、「エラー」にはなりません。 (「FALSE」はエラーではありません。) この場合の関数は素直に、 =IF(B1>=9000,A1,"") でいいでしょう。

z-3500
質問者

お礼

非常に助かりました。 ありがとうございます!!

z-3500
質問者

補足

早速のご解答ありがとうございます。 試してみたのですが、うまく行きませんでした。 というのも、 実はB列に表示されているものは、right関数によって導かれた数字なのです。 どうもright関数で導かれた数字は「文字列」として認識されてしまうようで、数値として認識されていないようなのです。 C列に=IF(B1>=9000,A1,"")といれてみると、B列が3000でも9900でも数字が表示されてしまいます。。。 何か、原因が他にもあるのでしょうか…複数の質問になってしまい、申し訳ありません。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

文字列なら一旦数値に変換しなくてはなりません =IF(VALUE(B1)>=9000,"",A1) もしA列の値も文字列で、数値に変換するなら =IF(VALUE(B1)>=9000,"",VALUE(A1))

z-3500
質問者

お礼

ありがとうございます!! 非常に助かりました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

=IF(B1>=9000,A1,"") だけでいいですね。 ためしに =B1>=9000 といれ見てください。こたえはTRUEかFALSEで、エラーにはなりません。

z-3500
質問者

お礼

早速のご回答ありがとうございました。 たすかりました!!

  • yama_x
  • ベストアンサー率20% (188/940)
回答No.2

iserror はあくまで計算式の結果がエラーとなる場合にしか 有効になりません。 たとえば0で割る式だったり、lookup系の関数で値が見つからなかったりで、 DIV0 や N/A などエラーメッセージが返ってくるかどうかを 判定するものです。 今回の質問でやりたいことはISERRORを使うまでもなく、ただの IFだけでOKです。 =IF(B1>=9000,"",A1) が正解です。

z-3500
質問者

お礼

>iserror はあくまで計算式の結果がエラーとなる場合にしか >有効になりません。 この点を理解しておりませんでした。 ありがとうございました!!

関連するQ&A