• ベストアンサー

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% (7996/17095)
回答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

  • Excelのrounddown関数について

    Excelのrounddown関数について教えてください。 Excel2003でrounddownで0(小数点以下を切り捨て)を入れて計算させた所、例えば、17,600 *0.1=1759となってしまい、1760にはなりません。単純に考えても、電卓で計算しても17,600 *0.1=1760になるはずですが、何故このようになってしまうのでしょうか? 因みに式ですが、=ROUNDDOWN($P4*0.1,0)で、P4(隣のセル)の数値を計算します。 例の場合、P4には3200*5.5の結果が入りますので、ここにも小数点以下の数値は発生しません。 何か設定が違っているのでしょうか?

  • ROUNDDOWN関数についての質問です

    ROUNDDOWN関数について教えてください。 (1)セルA1に8471.3 , セルA2に 8407.4 という数字を入れて  セルA3に ROUNDDOWN(A1-A2,1)  という式を入れました。結果が63.8になります。  なぜ63.9に答えがならないのでしょうか。  同じ式で桁を減らしてみて  A1に1.3 が A2に 0.4 という数字を入れた場合は  計算結果が0.9 と正しくなります。  あと少しずつ数字を変えていって試してみたら  A1に8471.8 , A2に 8407.4 の計算結果が 64.3 と  なりました。 (2)このROUNDDOWN以外でいい計算式あれば教えてください。

  • エクセル ROUNDDOWNの切り捨て

    関数式 =ROUNDDOWN((L15/D15-M15)*D15,2)             (57÷25)-2)×25=7.0     =ROUNDDOWN((L15/D15-M15*D15,1)             (57÷25)-2)×25=6.9 なぜ答えは7.0なのになぜ6.9の答えがでるのですか、考えてもわかりません。 在庫表で使用しています。まだ初心者です。 よろしくお願いします。

  • ROUNDDOWNとIFの組合せでエラー表示になる

    数量×単価=の計算式で 数量が空白なら空白、そうでなければ数量×単価 で小数点切捨ての値が出るように作成しました。 ROUNDDOWN(IF(B27="","",B27*D27),0) 数量に値が入っている場合は問題ないのですが 数量が空白だと#VALUE!が表示されてしまいます。 どうすればエラー表示されなくなるのでしょうか?

  • 関数

    =ROUNDDOWN(ROUNDDOWN(AI3,-3)*0.0545,0)の関数があり、AI3のセルには745,583の数字があり、この関数では40,602となるが、この数字に0.4を乗算して小数点切捨てで16,240の数字になる関数式を教えてください。よろしくお願いいたします。

  • Excelでエラー表示回避

    Excel2000で 「Q5」「Z5」「AI5」「AR5」「BA5」「BJ5」の各セルに『=IF(ISBLANK(L5),"",VLOOKUP(P5,$C$84:$D$98,2,0))』の関数計算式を入力し 「E5」に 『 =IF(ISBLANK(C5),"",SUM(Q5+Z5+AI5+AR5+BA5+BJ5))』の関数を入力すると 「E5」に 『 #VALUE !』の表示がされます。 ちなみに現時点では「Q5」以外は関数式は入力してありますが関数に関連するセルに数字が入力されてない為空白の状態です。 この状態でも正規の表示がされるようにするにはどうしたら良いか教えてください。 よろしくお願いします。

  • 一番右側のセルの値

    Sheet 1のセルA1~セルL10までのセル120個には、不規則にランダムで数字(整数)が記載されています。 ランダムですので数字のゼロが記載されているセルもあります。 これをセルM1にはセルA1~L1までのセルの一番右のセルに記載されているゼロ以外の数字を抜き出します。同様にA2~L2、A3~L3,・・・・・・・・と云うように各行についても最も右側にあるゼロ以外の数字を抜き出したいのですが、IF関数でIFを重ねて式を作成せずにできる関数を教えてください。 また、同様に一番左に記載されているゼロ以外のセルを抜き出す方法についても教えてください。

  • エクセル関数についての質問です。

    エクセル関数についての質問です。 ROUNDDOWN関数とIF関数1つのセルで使用したいのですが、どちらかしか適用されません。 ROUNDDOWN・・・割り算をして、その答えを小数点第二位で切り捨て。 IF・・・割り算をするセルが空欄の場合、エラーを表示させない。 以上を両立させたいのですが、ただ改行させただけではダメらしいです。 どなたかご教授よろしくおねがいします。

  • ROUNDDOWNで0.234を 0.23に変更させたセル(A)があり

    ROUNDDOWNで0.234を 0.23に変更させたセル(A)があります。 そのセル×7をすると、 1.638と表示されます。(B) そこはROUNDの関数をいれてあるので、1.64(B)と表示されます。 これを、見たままのA×7で、roundの式をいれて1.63と表示させるにはどうしたらいいでしょうか? あと、関数って、すべてこんな結果になるのでしょうか? 設定で切り上げ切捨てをしても、実際計算すると、もとの数字のまま引用されてしまうというような。

  • Excel rounddown関数について

    Excelのrounddown関数について教えてください。 出勤表上で、所定勤務時間(8時間)との差を 小数点以下第3位を切り捨てて、10進法で記載したいのですが うまくいきません。 セルA(始業)→10:15 セルB(終業)→18:30 セルC(休憩)→1:00 セルD(勤務時間)→(数式:=B-A-C)7:15 としており、セルEにセルDで求めた値と所定労働時間の8時間との 差を10進法表記で、小数点以下第3位を切り捨てて入力したく 以下の数式を入れています。 =rounddown(8-(D*24),2) 上記の場合、0.75が解答として正しいかと思いますが、 0.74という解答が返ってきます。 セルDの値を数式ではなく、直接入力すると 正しい値0.75が返ってくるので、セルDを修正する必要が あるのかなと思うのですが、どこを修正すればいいかわからず 途方に暮れています。 初歩的なところで申し訳ありませんが、お知恵を拝借できれば幸いです。 よろしくお願いいたします。

専門家に質問してみよう