• ベストアンサー

エクセルの関数について

時間の計算する表を作ったのですが、うまくいかない所があります。 現在の表は、B4に開始時間とC4に終了時間を入れ5時から22時までの間の経過時間をD4に、22時から5時までの時間経過をE4に入るようにしています。 「C1に5:00、D1に22:00、 B4に=IF(OR(B4="",C4=""),"",IF(OR(B4>=$D$1,B4<$C$1),"",IF(OR(C4>$D$1,C4<=$C$1),$D$1,C4)-B4))、 E4に=IF(OR(B4="",C4=""),"",IF(AND(C4>$C$1,C4<=$D$1),"",IF(AND(B4>=$C$1,C4<=$C$1),1-IF(B4<$D$1,$D$1,B4)+C4,C4-IF(AND(B4>=$C$1,B4<$D$1),$D$1,B4))))」です。 そこで、5時をまたがった時に、5時までの部分をE4に5時からの部分をD4に分けて表示させたいのですが、うまくいきません。 例えば、開始4:30 終了5:10の場合、D4に0:10 E4に0:30が表示させるようにです。 よろしくお願いします。

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

  • ベストアンサー
  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.3

あまり検証していませんが・・ ■D4 =IF(OR(COUNT(B4:C4)<2,MIN(C4+(C4<B4),$D$1)-MAX(B4,$C$1)<=0),"",MIN(C4+(C4<B4),$D$1)-MAX(B4,$C$1)) ■E4 =IF(OR(COUNT(B4:C4)<2,C4+(C4<B4)-B4-N(D4)=0),"",C4+(C4<B4)-B4-N(D4)) で、どうでしょうか?

morito_55
質問者

お礼

皆さんありがとうございました。 作成することができました。 大変助かりました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

B4="5:00" C4="22:00" としてIF文無しなら D4=MIN(MAX(D1,B4),C4)-MAX(C1,B4) E4=B4-MIN(C1,B4)+MIN(MAX(D1,C4),B4+1)-MAX(D1,C4)

  • bys07405
  • ベストアンサー率38% (37/97)
回答No.1

他にいい方法があるかもしれませんが、自分が試した物を。 設定開始時間と設定終了時間があり、時間内と時間外の合計時間を計算したいということですよね。 設定開始時間がセルC1、設定終了時間がセルD1 計算対象の開始時間がB4、計算対象の終了時間がC4として a.開始時間以前の時間は =IF(B4<C1,C1-B4,0) b.設定時間内の時間は  =IF(C4>D1,D1,C4)-IF(B4>=C1,B4,C1) c.終了時間以後の時間は =IF(C4>=D1,C4-D1,0) 質問の例にいくとセルD4に計算式b、セルE4に計算式aとcの合計を入れればよいかと。 あとは必要に応じてエラーチェックを入れてみてください。

関連するQ&A