プロが教える店舗&オフィスのセキュリティ対策術

以下の式での結果を、小数点切捨てで表示させたいと思います。

=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))
と入力するとエラーは回避できますが、式がとても長くなり見づらいです。条件付書式も使用しないで考えたいです。

質問に元式を使用していますので分かり難いかもしれませんが、回答の方宜しくお願いします。

A 回答 (2件)

最初の


=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))
にエラーがあるときは考慮していませんので。
    • good
    • 0
この回答へのお礼

回答有難うございます。

確かに2,3番目の式に意味はありませんね。
即席で式を作ったので深く考えておりませんでした。

f272様の式を使用させて頂いたところ、エラーも無く計算されました。
解決出来ましたので質問は締め切らせて頂きます。

お礼日時:2009/09/02 18:09

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))
    • good
    • 0
この回答へのお礼

回答有難うございます。

>E5が空白の時、""に対してROUNDDOWNを行うことになるからエラーになるのです。

そうでしたか、""は文字列扱いでしたね。
今後は気をつけます。

お礼日時:2009/09/02 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!