こんにちは
以前いろいろとご教授いただいて作成した勤怠管理表が、お蔭様で軌道に乗りまして、業務改善にかなり貢献しており、大好評を得ております。
その節は、ご教授いただいた方々に大変お世話になりました。
有難うございました。
今回は、その勤怠管理表より工事ごとの勤務状況を分析したく、その方法でつまづいております。
今、この勤怠管理表では、1日単位で工事番号(G113)ごとに、作業開始時間(D113)~作業終了時間(F113)を入力し、遅早外~深夜(U113~U116)に振り分けています。

U113 → =IF(C113="有休半日","",IF(D113="","","7:30"-TEXT(U114,"h:mm")))
U114 → =IF(COUNT(D113:F113),MAX(MIN(F113,"17:30"*1)-MAX(D113,"8:30"*1),0))+IF(COUNT(D114:F114),MAX(MIN (F114,"17:30"*1)-MAX(D114,"8:30"*1),0))+IF(COUNT(D115:F115),MAX(MIN(F115,"17:30"*1)-MAX(D115,"8:30"*1),0))+IF(COUNT(D116:F116),MAX(MIN(F116,"17:30"*1)-MAX(D116,"8:30"*1),0))-((((COUNTIF(D113:D116,"<12:00")>0)+(COUNTIF(F113:F116,">13:00")>0))*"0:15"+(COUNTIFS(D113:D116,"<13:00",F113:F116,">12:00"))*"1:00"))
U115 → =MIN(MAX(F113,"18:00"),"22:00")-MIN(MAX(D113,"18:00"),"22:00")+MIN(MAX(F114,"18:00"),"22:00")-MIN(MAX (D114,"18:00"),"22:00")+MIN(MAX(F115,"18:00"),"22:00")-MIN(MAX(D115,"18:00"),"22:00")+MIN(MAX(F116,"18:00"),"22:00")-MIN(MAX(D116,"18:00"),"22:00")
U116 → =MIN(MAX(F113,"22:00"),"29:00")-MIN(MAX(D113,"22:00"),"29:00")+MIN(MAX(F114,"22:00"),"29:00")-MIN(MAX(D114,"22:00"),"29:00")+MIN(MAX(F115,"22:00"),"29:00")-MIN(MAX(D115,"22:00"),"29:00")+MIN(MAX(F116,"22:00"),"29:00")-MIN(MAX(D116,"22:00"),"29:00")
W132~W151には、1ヶ月分の工事番号ごとのトータル時間を出しています。
W132 → {=SUMPRODUCT(($G$5:$G$128=L132)*(IF($D$5:$D$128="","0",($F$5:$F$128-IF($D$5:$D$128>="8:30"*1,$D$5:
$D$128,"8:30"*1)))))}
今回出したいのは、月単位で工事ごとに、どの時間帯に作業しているかの分析になりますので、工事番号でヒットしたタイミングで常勤・残業・深夜に振り分けていこうと思い、U114~U116とW132~の関数を上手く組み合わせればよいのかなと思ったのですが、U114~U116は日ごとなので、それだとかなり重たく長く無理でした。
月単位だと工事番号も幾つかしかないので、工事番号ごとにD列・F列を抜き出してから振り分けた方がよいのかなと思ったり…
どちらにしろ、かなり複雑で大変な作業になりそうで…
もっと柔軟に考えたほうがよいのかと思うのですが、煮詰まってしまいました。
何かよい方法があればアドバイスをいただきたいと思います。
どうぞ宜しくお願い致します。