• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELでの関数についての質問)

EXCEL関数についての質問

このQ&Aのポイント
  • EXCELの関数を使用して数式計算を行う際、一部のセルの参照によってエラーが発生する場合の解法を求めます。
  • 問題が発生するセルの数式は、参照先のセルが空白の場合に計算エラーが発生します。
  • スマートな解決策を探し求めており、VBマクロなどの方法も歓迎していますが、基礎的な説明を含めて教えていただきたいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

わざわざISBLANK関数を使わず B1: =IF(A1="","",50/B2*100) C1: =IF(B1="","",100-C2) のように計算した方が,モアシンプルと思います(いや,もちろんセンスの問題ですが)。 #余談 なお,ご質問に書かれている数式はそれぞれB1がB2,C1がC2も計算に使用しているので,たとえばA1に数字があってもA2に数字が無くて2行目に""が計算されている場合,1行目(B1,C1)はエラーになります。 この波及効果で,たとえば10行目のA列(A10)が空だった場合,その上のB1:B9,C1:C9は全滅で全てエラーになります。 「状況を簡略化して説明すると以下のとおりです。」という事なので,ホントはそういう問題は発生しないようにちゃんと作成できていることを祈ります。

mi_stan
質問者

お礼

確かにこっちのほうがずっとスマートな式ですね。勉強になりました。 ご回答ありがとうございました。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>B1がBLANKの場合でも計算が行われ、結果として#VALUE!のエラーとなります。  C1セルに入力されている関数が、 =IF(ISBLANK(B1),"",100-C2) というものである場合には、 100-C2 という計算には、B1セルの値は使用されていませんから、 例えB1セルが空欄や文字列であった場合でも、C2セルに数値データが存在していれば、エラーとはなりません。  しかし、C2セルが関数によって空欄となっている場合には、B1セルが空欄ではなくとも、エラーとなってしまいます。  又、C2セルが空欄ではなくとも、文字列が入力されている場合には、やはりC1セルはエラーとなってしまいますから、 「C2セルが空欄の場合は、C1セルを空欄にする」のではなく、 「C2セルに数値データが存在していない場合には、C1セルを空欄にする」という様にしなければなりません。  同様に、B1セルの関数も、エラーとなるのか否かは、A1セルの値には関係なく、B2セルの値によって決まる事です。  B1セルに入力されている関数では、B2セルの値は、割り算の除数(分数の分母)として使用されていますから、B2セルのデータが、空欄や文字列だけではなく、0の場合にもエラーとなってしまいます。  従って、エラーを出したくないだけでしたら、B1セルの関数は次な様なものとなります。 =IF(AND(ISNUMBER(B2),B2<>0),50/B2*100,"")  そして、C1セルの関数は次な様なものとなります。 =IF(ISNUMBER(C2),100-C2,"")  又、エラーを出さないだけではなく、A1セルが空欄の際には、「50/B2*100」の計算結果がエラーとならない場合でも、必ずB1セルも空欄としなけれはならない場合には、B1セルの関数は次な様なものとなります。 =IF(AND(A1<>"",ISNUMBER(B2),B2<>0),50/B2*100,"")  同様に、B1セルが空欄の際には、「100-C2」の計算結果がエラーとならない場合でも、必ずC1セルも空欄としなけれはならない場合には、C1セルの関数は次な様なものとなります。 =IF(AND(B1<>"",ISNUMBER(C2)),100-C2,"")

mi_stan
質問者

お礼

なるほど。ANDを使えば複数条件対応が可能なのを忘れていました。 今回のケースでは回答2の方で対応が可能でしたが、こういうやり方もあるということは覚えておきます。勉強になりました。 ご回答ありがとうございました。

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

ISBLANK(B1)という場合にはB1セルが完全に空白のセルであって式などが入力されている場合には空白のセルとは認識されません。式が入力されていてセルが空白となっている場合には単に""を使うことで良いでしょう。 例えばB1セルには =IF(A1="","",50/B2*100) C1セルには =IF(B1="","",100-C2) といった式を入力すればよいでしょう。

mi_stan
質問者

お礼

回答2のkeithinさんも同様の回答でしたが、やはりISBLANK関数よりはA1=""の方が、良いのでしょうかね。この方法ならエラーは出ないので使わせて頂きます。 ご回答ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

単純にC1の式を↓で、良いのでは? =IF(ISBLANK(A1),"",100-C2)

mi_stan
質問者

お礼

確かにA1依存なら問題ないですね。目からウロコでした(笑 ご回答ありがとうございます。

関連するQ&A