ID非公開

2022/1/14 22:29

55回答

エクセルで、勤務時間帯ごとの勤務時間を求める関数を教えて下さい。 私の会社は、3交代制の勤務ですが、勤務時間帯は下記のように設定されています。 早朝勤務:5:00~8:00

補足

3交代制ですが勤務時間を超過して勤務する場合もあります。

Excel230閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0
画像
ID非公開

質問者2022/1/14 23:24

回答ありがとうございます。 会社のデータで使えるかどうか試させていただいた上で、また質問するかもしれません。 よろしくお願いします。

ThanksImg質問者からのお礼コメント

皆さんご回答をありがとうございました。 ベストアンサーは、一番にご回答いただき4つの勤務帯でコンパクトに表示できたset********さんにさせていただきます。

お礼日時:1/17 18:21

その他の回答(4件)

0

Grumpy_さんのご回答を補足します。 下図のように勤務開始時刻が「0時~24時」に対応する場合、8つの時刻区分が必要になります。 集計区分が4つですから、2つずつ加算する数式で4列にするか、そのまま8列に数式を入力し次の数式で使うときに2列を参照するかです。 図の数式はG4セルに次式を入力し、縦横にコピーしています。 =MAX(0,MIN(G$3,$E4+($E4<$D4))-MAX(G$2,$D4)) 2行目と3行目は時刻を入力しています。 まったく無用な時刻区分があるなら、その列は省略します。

画像
ID非公開

質問者2022/1/17 18:16

ご回答ありがとうございました。 会社のデータで試したところ、期待する時間が表示されました。

0

データが2行目から下方にあるとします。 H2セルには次の式を入力してK2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーすればよいでしょう。 =IF(COUNT($D2:$E2)=0,"",IF(COLUMN(A1)=1,MAX(0,MIN(IF($E2<$D2,$E2+1,$E2),"8:00")-MAX($D2,"5:00"))+MAX(0,MIN(IF($E2<$D2,$E2+1,$E2),"32:00")-MAX($D2,"29:00")),IF(COLUMN(A1)=2,MAX(0,MIN(IF($E2<$D2,$E2+1,$E2),"17:00")-MAX($D2,"8:00")),IF(COLUMN(A1)=3,MAX(0,MIN(IF($E2<$D2,$E2+1,$E2),"22:00")-MAX($D2,"17:00")),IF(COLUMN(A1)=4,MAX(0,MIN(IF($E2<$D2,$E2+1,$E2),"29:00")-MAX($D2,"22:00")),"")))))

0

添付参照 1行目と2行目の時間帯を、貴社の時間帯に修正してください。 ただし 深夜勤務:22:00~5:00 は 22:00~29:00と 入力ます。 関数は みな 同じです D6に =MAX(0,MIN(D$3,$C6)-MAX(D$2,$B6)) といれ 右と下にオートフィル

画像
ID非公開

質問者2022/1/14 23:29

回答ありがとうございます。 出勤時間と退勤時間はタイムカードから吐き出されるもので、日をまたぐ場合の退勤時間は35:00ではなく11:00となります。

0

もう10年繰り返してるんだけどなぁ。経過時間を求める「関数」はありませんけど、定石となる「数式」があるのでそれを使いましょう。 「出勤から退勤までのうち、時刻1から時刻2に該当する時間は、退勤と時刻2の早い方から出勤と時刻1の遅い方を引き算する。ただしマイナスにはしない」 =max(0, min(退勤*1, 時刻2)+max(出勤, 時刻1)) ちなみに深夜時間帯は0時から5時までと22時から29時までです。22時から5時までじゃ時間を遡っちゃいますね。

ID非公開

質問者2022/1/14 23:27

回答ありがとうございます。 出勤時間と退勤時間はタイムカードから吐き出されるもので、日をまたぐ場合の退勤時間は29:00ではなく5:00となります。