• ベストアンサー

rounddownでのエラー対処

以下の式での結果を、小数点切捨てで表示させたいと思います。 =IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))))) 上の式にROUNDDOWN()関数を使って見ました。 一応2つ目の式は元の関数も括弧して試してみました。 =ROUNDDOWN(IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))))),0) =ROUNDDOWN((IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),I(M5>0,$O$5/$P$5*M5,$O$5)))))),0) ここで質問ですが、セルE5の数字を消す(空白)とエラーになってしまいますので、エラーの回避方法をお願いします。(式の通りE5が空白であれば結果も空白にさせたい) ROUNDDOWN()関数を使用する前はエラーにはなりません。 補足 ・上記はG5セルの関数です ・$O$5には小数点以下3桁までの数字が入っています ・$P$5には必ず正整数が入ります ・F列には=ROUNDDOWN($N$5*E5,0)の式が入っており、$N$5には小数点以下2桁までの数字が入っています(※質問式とは直接関係ありません) ・同じ行でL列とM列同時に数字が入ることはありません。またどちらも空白になることはあります。何れも正整数か空白です。 ・その他セルには正整数か空白が入ります =IF(ISERROR(ROUNDDOWN(IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))))),0)),"",ROUNDDOWN(IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))))),0)) と入力するとエラーは回避できますが、式がとても長くなり見づらいです。条件付書式も使用しないで考えたいです。 質問に元式を使用していますので分かり難いかもしれませんが、回答の方宜しくお願いします。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18128)
回答No.1

最初の =IF(E5="","",IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))))) を見るとIFが IF(E5="", IF($O$5/$P$5*($P$5-L5+1)="", IF($O$5/$P$5*M5="", IF(L5>0, IF(M5>0, これだけあるけど2番目と3番目は意味がありません。計算結果が""になることがありませんから。だから =IF(E5="","",IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5))) で十分だけど、この結果はE5が""でないときは IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5)) になります。これだけが意味のある数字でしょうから、ここにROUNDDOWNを適用します。 =IF(E5="","",ROUNDDOWN(IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5)),0)) ただし IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5)) にエラーがあるときは考慮していませんので。

DIYsitumon
質問者

お礼

回答有難うございます。 確かに2,3番目の式に意味はありませんね。 即席で式を作ったので深く考えておりませんでした。 f272様の式を使用させて頂いたところ、エラーも無く計算されました。 解決出来ましたので質問は締め切らせて頂きます。

その他の回答 (1)

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

E5が空白の時、""に対してROUNDDOWNを行うことになるからエラーになるのです。 E5が空白では無い時の計算結果にROUNDDOWNを行いましょう =IF(E5="","",ROUNDDOWN(IF($O$5/$P$5*($P$5-L5+1)="",$O$5,IF($O$5/$P$5*M5="",$O$5,IF(L5>0,$O$5/$P$5*($P$5-L5+1),IF(M5>0,$O$5/$P$5*M5,$O$5)))),0))

DIYsitumon
質問者

お礼

回答有難うございます。 >E5が空白の時、""に対してROUNDDOWNを行うことになるからエラーになるのです。 そうでしたか、""は文字列扱いでしたね。 今後は気をつけます。

関連するQ&A