[[20151216102345]] 『時間合計』(くろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『時間合計』(くろ)

いつもお世話になってます。
時間を合計したいのですが、とてつもない長い式になりもっと簡潔に出来ないでしょうか?
ご教授お願いします。

H4=IF(COUNT(C4:D4)<2,"",IF(AND(WEEKDAY(A4)<>7,WEEKDAY(A4)<>1,COUNTIF(祝日,A4)<>1),IF(AND(C4>$AJ$3,OR(E4<>"",F4<>"")),IF(D4+(C4>D4)-C4<="6:00"*1,0,IF(D4+(C4>D4)-C4<="8:45"*1,MIN(D4+(C4>D4)-C4-"6:00"*1,"0:45"*1),IF(D4+(C4>D4)-C4<="13:15"*1,MIN(D4+(C4>D4)-C4-"8:00"*1,"1:15"*1),IF(D4+(C4>D4)-C4<="18:15"*1,MIN(D4+(C4>D4)-C4-"12:00"*1,"2:15"*1),IF(D4+(C4>D4)-C4>="23:00"*1,MIN(D4+(C4>D4)-C4-"19:45"*1,"4:15"*1),MIN(D4+(C4>D4)-C4-"16:00"*1,"3:15"*1)))))),TEXT(MAX(0,MIN(D4+(C4>D4),$AK$4)-MAX(C4,$AK$3))+MAX(0,MIN(D4+(C4>D4),$AM$4)-MAX(C4,$AM$3))+MAX(0,MIN(D4+(C4>D4),$AO$4)-MAX(C4,$AO$3))+MAX(0,MIN(D4+(C4>D4),$AQ$4)-MAX(C4,$AQ$3))+MAX(0,MIN(D4+(C4>D4),$AT$4)-MAX(C4,$AT$3))+MAX(0,MIN(D4+(C4>D4),$AV$4)-MAX(C4,$AV$3))+MAX(0,MIN(D4+(C4>D4),$AY$4)-MAX(C4,$AY$3)),"h:mm")*1),IF(D4+(C4>D4)-C4<="6:00"*1,0,IF(D4+(C4>D4)-C4<="8:45"*1,MIN(D4+(C4>D4)-C4-"6:00"*1,"0:45"*1),IF(D4+(C4>D4)-C4<="13:15"*1,MIN(D4+(C4>D4)-C4-"8:00"*1,"1:15"*1),IF(D4+(C4>D4)-C4<="18:15"*1,MIN(D4+(C4>D4)-C4-"12:00"*1,"2:15"*1),IF(D4+(C4>D4)-C4>="23:00"*1,MIN(D4+(C4>D4)-C4-"19:45"*1,"4:15"*1),MIN(D4+(C4>D4)-C4-"16:00"*1,"3:15"*1))))))))

C4,AK3,AM3,AO3,AQ3,AT3,AV3,AY3=開始時間
D4,AK4,AM4,AO4,AQ4,AT4,AV4,AY4=終了時間
H4=1.平日でAJ3<C4でE4又はF4が空白でない場合⇒6:00<=0:45,8:45<=0:30,13:15<=1:00,18:15<=1:00,23:00<=1:00

  2.平日で上記以外            ⇒AK3:AK4+AM3:AM4+AO3:AO4+AQ3:AQ4+AT3:AT4+AV3:AV4+AY3:AY4とC4:D4の差の合計

   3.土日祝の場合             ⇒6:00<=0:45,8:45<=0:30,13:15<=1:00,18:15<=1:00,23:00<=1:00

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 このままでは回答がつきにくいでしょう。

 表のレイアウトを示し、どの範囲をどのような条件で集計したいのか、
 具体的に示して頂けませんでしょうか。

(通りすがりの者) 2015/12/16(水) 15:37


 1.条件がまとまります
 条件1と条件3の結果は同じになるのであれば、
 A4の日付が平日で、AJ3>=C4で、E4:F4に空白がない場合はAK3:AK4+AM3:AM4+AO3:AO4+AQ3:AQ4+AT3:AT4+AV3:AV4+AY3:AY4とC4:D4の差の合計 
 それ以外は6:00<=0:45,8:45<=0:30,13:15<=1:00,18:15<=1:00,23:00<=1:00
 になるのでしょう
 果たして今もなっているのかもしれませんが

 2.違うセルに勤務時間を出す
 D4+(C4>D4)-C4は夜勤の時も考慮して勤務時間を算出しているのですよね
 式の中に何回も出てくるのだし、この際どこかのセルに放り出して、そこを参照すればいかがでしょう

 3.WEEKDAY関数について
 WEEKDAY関数の第2引数に2を設定すると、土曜は6、日曜は7を返します
 なので、WEEKDAY(A4,2)<6で平日となります

 ……とかいろいろ書きましたが、シートレイアウトと条件による欲しい結果を書けば、エキスパート様から回答がつくかと思います
 式を解読するのに労力がかかりすぎます

(____) 2015/12/16(水) 16:51


 レイアウトを追加します。
休憩時間(H列)を求めたいです。AJ:AYは複数パターンがあるのでその都度変更する予定です。

   |[A]        |[B] |[C] |[D] |[E] |[F] |[G] |[H] 
 [1]|日付       |曜日|出勤|退勤|休暇|代休|振休|休憩
 [2]|           |    |    |    |    |    |    |    
 [3]|平成27年4月|    |    |    |    |    |    |    
 [4]|          1|水  |    |    |    |    |    |    

    |[AJ]          |[AK] |[AL]          |[AM] |[AN]        |[AO] |[AP]      |[AQ] |[AR]      |[AS]        |[AT] |[AU]|[AV]|[AW]|[AX]  |[AY]
 [1]|通常勤務(1)|休憩 |通常勤務(2)|休憩 |時間外(1)|休憩 |深夜(1)|休憩 |深夜(2)|時間外(2)|休憩 |深夜|休憩|深夜|時間外|休憩
 [2]|              |     |              |     |            |     |          |     |          |            |     |    |    |    |      |    
 [3]|9:15          |12:15|13:00         |18:00|18:30       |22:00|23:00     |27:00|28:00     |29:00       |32:15|0:00|3:00|4:00|5:00  |8:15
 [4]|12:15         |13:00|18:00         |18:30|22:00       |23:00|27:00     |28:00|29:00     |32:15       |33:15|3:00|4:00|5:00|8:15  |9:15

(くろ) 2015/12/16(水) 17:15


(通りすがりの者)様

回答ありがとうございます。
上にレイアウトを貼付けました。
休憩時間(H列)を求めたいです。
宜しくお願いします。
(くろ) 2015/12/16(水) 17:16


(____) 様

回答ありがとうございます。
>>1.条件がまとまります
 この様になってるつもりなのですが、この通りかなり長くなってしまうので
 もっと簡潔に出来ないかと質問してます。

>>2.違うセルに勤務時間を出す
  分かり難くくて申し訳ないですが、これは休憩だけの式です(レイアウトを追加したので参考にして下さい)

>>3.WEEKDAY関数について
  ずっと土曜は6、日曜は1だと思ってました!!
  WEEKDAY(A4,2)<6で済むのはいいですね
  この場合祝日はどういう式になるのですか??

(くろ) 2015/12/16(水) 17:23


 >AND(WEEKDAY(A4)<>7,WEEKDAY(A4)<>1,COUNTIF(祝日,A4)<>1)
 この部分について こんな感じでもいいかな

 =WORKDAY(A4-1,1,祝日)=A4

 時間の計算の様ですが、小数演算誤差が気になりますね
 出勤、退勤時刻に決まり事はありますか
(AAA) 2015/12/17(木) 07:31

(AAA)様

回答ありがとうございます。

>> =WORKDAY(A4-1,1,祝日)=A4
だけでもいいんですね!!!

>>時間の計算の様ですが、小数演算誤差が気になりますね

 出勤、退勤時刻に決まり事はありますか

時間の計算苦手でこれだと誤差がでるんですね
どのようにしたら回避できるのでしょうか?

出勤、退勤時刻の決まり事とは?
何時から出勤しても平日の場合は休憩時間の箇所は同じです。
(くろ) 2015/12/17(木) 10:44


 詳しくは読んでいませんが

 下記の場合どのようになりますか

 出勤  退勤
 9:30    17:30
 11:30   19:30

 全て8時間で IF(D4+(C4>D4)-C4<="8:45"*1,MIN(D4+(C4>D4)-C4-"6:00"*1,"0:45"*1)・・・
 に該当しそうですが、表を見ると 11:30 〜19:30の場合1:15になりそうな気もしますね

 提示された式が正しいという前提で回答すればいいのですか 

(AAA) 2015/12/17(木) 19:32


(AAA)さん

1.平日でAJ3<C4でE4又はF4が空白でない場合と土日祝の場合
 

 出勤  退勤
 9:30    17:30   0:45
 11:30   19:30   0:45

2.平日で上記以外

 出勤  退勤
 9:30    17:30   0:45
 11:30   19:30   1:15

になります。
宜しくお願いします。

(くろ) 2015/12/18(金) 10:31


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.