• ベストアンサー

エクセル 関数式

IF式で以下の2つの式は同義ではないのですか? =IF(C2="","",B2+C2) =IF(C2<>"","B2+C2","") 上の式では上手く行きますが、下の式はNGです。 よろしくお願いします。 また上の式で、 C2="",は「C2セルが空白なら」だと思いますが、数字以外の文字があっても「真」になります。 これを数字の時のみ「真」 にするにはどうすれば宜しいか? 初歩的な質問ですが、よろしくお願いします。

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

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

「"B2+C2"」ではなく、「B2+C2」です。「"B2+C2"」は合計ではなく、「B2+C2」という文字列を表しています。したがって両式は、等価ではありません。 「C2=""」の意味はおっしゃるとおりです。C2 セルに何らかの文字が入力されていれば、FALSE となります。ただし、その文字が空文字列「""」のときのみ、TRUE となります。 原因として考えられそうなのは、セルの書式です。書式で何かの文字列が表示されていても、それはセルに入力されている値とは別物です。したがって論理式「C2=""」が返す値には、直接影響しません。 C2 を右クリックして「セルの書式設定>表示形式タブ>ユーザー定義」にて、何らかの文字を表示するようになっていないか、ご確認ください。または、リボン/メニューバー「ホームタブ>条件付き書式」の可能性もあります。 >これを数字の時のみ「真」 恐らく「真」ではなく「偽」とおっしゃりたいと受け取ります。その式では無理なので、「C2=""」の代わりに「isnumber(c2)=0」と書いてください。「""」以外の文字列でも FALSE で構わないのであれば、 「C2=""」で問題ないはずです。 お好きな数式で。ゼロは、空文字列によらず、書式で見えなくさせることも可能です。 =(c2<>"")*(b2+c2) =(c2<>"")*sum(b2,c2) =IF(isnumber(c2),B2+C2,) =IF(isnumber(c2),B2+C2,"") =IF(isnumber(c2)=0,"",B2+C2) =IF(C2="",,B2+C2) =IF(C2="","",B2+C2)

snug
質問者

お礼

色々教えていただき、有難うございました。 今後の参考にいたします。 また質問することがあると思いますが、よろしくお願いします。

snug
質問者

補足

早速のご回答、有難うございます。 初心者の私は""を単なる括弧のつもりで解釈していました。 B2+C2とすると一応上手く行きました。 またisnumberの使い方を知り、ひとつ上達できました。 あと教えていただいた7つの式を全て試してみました。 結果は全て違いがあり、大変勉強になりました。 結果は上から1.2.3.4.5.6.7.としますと、4.が私の希望通りのものでした。 希望はCに文字があっても無視して「0無しの空欄」で返すでした。 1.と6.は、同じで文字があると#VALUE!となり、BとCに数値がない時は0となる。 2.は、文字があるとBの値が表示されてしまい、BとCに数値がない時は0となる。 3.は、文字があっても無くても、Bに数値がない時は0となる。 4.は、望みの結果です。 5.は、文字があると#VALUE!となり、文字が無いとBの数値をそのまま表示、BとCに数値がない時は0となる。 7.は、文字があると#VALUE!となり、BとCに数値がない時は0無しの空欄となる。 なおエクセルは2003で書式は標準です。