[[20050301131606]] 『労働時間の計算法』(キャン) ページの最後に飛ぶ

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

 

『労働時間の計算法』(キャン)

出勤簿を作っていまして

「退勤時間−出勤時間−休憩時間=労働時間」

と言う式を立てたいのですが
たとえば、深夜働いていて
22時に出勤して4時に退勤する場合の式の組み立てが分かりません。

そして記入法を簡素化したいため、
22:00入店の場合は「22」
22:30入店のときは「22.5」と記入して計算できるようにしたいのですが
アドバイスお願いします。

WinXPです。


 このようなことでしょうか?

      A         B        C        D
 1 出勤時刻  退勤時刻  休憩時間  労働時間
 2   22.5       4.0       1.0     5.5
 3  22:30      4:00      1:00    5:30

 小数点を使った計算なら、D2に=IF(B2>A2,A2-B2,B2+24-A2)
 時刻表示での計算なら、  E2に=IF(B3>A3,A3-B3,B3+1-A3)
 でどうでしょう。
 (sato)


出来ましたありがとうございます!
しかし新たな問題点が・・・
休憩を自動計算したいんですけど
3時間以下の勤務は0
3時間以上4時間未満0.25
4時間以上6時間未満0.5
6時間以上11時間未満1
11時間以上1.5
としたいのですが

if((e12-d12)<3,0,if(4>(e12-d12)>=3,0.25,if(6>(e12-d12)>=4,0.5,if(11>(e12-d12)>=6,1,if((e12-d12)>=11,1.5)))))

出来ないのですがこれのどこがいけないのでしょうか??
ちなみにd12出勤時間 e12退勤時間 です


 =IF((E12-D12)<3,0,IF((E12-D12)<4,0.25,IF((E12-D12)<6,0.5,IF((E12-D12)<11,1,1.5))))
 これは、E12がD12より大きい数字の場合だけに対応しています。
 (sato)

分かりました
ではこの場合どうやって休憩時間を求めればよいでしょうか?


 私が気づいた点を。
 IF文のなどの条件を記述する際によく勘違いしちゃうんですが、
 ○○以上、○○未満などの条件の時。
 エクセルでは  4>(e12-d12)>=3  などの記述の仕方はできないんです。
 条件が複数ある場合はANDもしくはOR関数などを使う必要があります。
 4>(e12-d12)>=3 の場合は AND(4>e12-d12,e12-d12>=3) という記述の仕方になります。

 ただ、IF文は先に当てはまった条件が優先されますので、
 satoさんの書き方が一番スマートな式だと思います。

 どう対応したらよいか?とのことですが、
 作業列を1行作って =IF(e12<=d12,e12+24,e12) と入力し
 日付を超えた場合+24時間した数値を
 そうでない場合はそのままの時間を表示するようにして
 計算には作業列のセルを使用すればいいと思います。(邪魔なら非表示にすればいいし)

 (gloomy) *本日は退社してしまいますので、これから先回答できません。すみません。


 gloomyさん、フォロー解説ありがとうございます。
 私も自分で作るならgloomyさんの言うとおり、作業列を使います。。

 ただ、どうしても作業列を使いたくないなら、
 =IF(E12>D12,IF((E12-D12)<3,0,IF((E12-D12)<4,0.25,IF((E12-D12)<6,0.5,IF((E12-D12)<11,1,1.5)))),IF((E12+24-D12)<3,0,IF((E12+24-D12)<4,0.25,IF((E12+24-D12)<6,0.5,IF((E12+24-D12)<11,1,1.5)))))
 でしょうか?あってるかな?
 もし自分でこんな式を入れておいて、あとで修正したり他人が修正する必要が出てきた場合たいへんなので、
 個人的には作業列を使う方法をお薦めします。

 (sato)

コメント返信:

[ 一覧(最新更新順) ]


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