| |
【第59回】 |
9時〜17時の勤務時間や遅刻・早退に配慮して
アルバイトの実勤務時間を求めたい |
|
|
 |
|
 |
アルバイト代を計算するために、アルバイトの勤務時間を求めます。ただし、ここでは一般社員と同じように「9時〜17時の定時出勤に対して、遅刻したり早退したりした場合には1分単位で勤務時間から削る」という前提でアルバイトの実勤務時間を求めることとします(有償の早出や残業は考えないでよいことにします)。
9時・17時という定時出勤・定時退勤を考えなければ、単純に退勤時刻から出勤時刻を引き算すればよいのですが、「9時の出勤時刻より早くきても9時出勤とみなし、17時の退勤時刻より遅く退勤しても17時退勤とみなさないといけない」ところが厄介な点です。
つい「IF」関数を使って、「出勤時刻が9時より前であれば……、退勤時刻が17時より後であれば…….」と考えがちですが、「IF」関数を使うと、どうしても数式が長く、複雑になってしまいます。こういった場合には、最大値を返す「MAX」関数と最小値を返す「MIN」関数を使うと、よりスマートかつ簡潔に処理できます。
|
 |
|
| |
 |
 |
 |
| 毎日の出勤時刻と退勤時刻を記録した表の「実勤務時間」列に、9時〜17時の勤務時間および遅刻・早退に配慮した実勤務時間を求める数式を設定しよう |
|
|
|
 |
 |
| |
| 出勤時刻 |
退勤時刻 |
実勤務時間 |
| 9:00 |
17:00 |
8:00 |
| 8:55 |
17:00 |
8:00 |
| 8:55 |
17:10 |
8:00 |
| 8:50 |
16:35 |
7:35 |
| 9:02 |
17:00 |
7:58 |
| 9:02 |
17:10 |
7:58 |
| 8:45 |
17:05 |
8:00 |
|
 |
 |
| 9時〜17時の勤務時間および遅刻・早退に配慮すると、実勤務時間はこのようになる。9時より前に出勤した場合は9時出勤とみなし、9時より後に出勤した場合は実際に出勤した時刻をそのまま出勤時刻とみなす。退勤時刻も同様だ |
|
|
|
 |
 |
| |
 |
 |
 |
| ということは、実際にアルバイトが出勤した時刻と定時の9時を比較して、より遅い方を出勤時刻として採用すればよいので、最大値を求める「MAX」関数を使えばよい |
|
|
|
| |
 |
| |
 |
 |
 |
| 出勤時刻は「MAX」関数を使ってより大きい(遅い)方の時刻を求め、退勤時刻は「MIN」関数を使ってより小さい(早い)方の時刻を求める。あとは、この2つの値の引き算をすれば、実勤務時間が求められる。先頭の「IF」関数は出勤時刻と退勤時刻が空欄だった場合の処理だ |
|
|
|
 |
 |
| |
 |
 |
 |
| 先頭行の実勤務時間が求められたので、その右下隅の「フィルハンドル」をドラッグして、表の2行目以下にコピーする |
|
|
|
| |
 |
| |
|
 |
|
 |
表の末尾に月間の実勤務時間の合計を求める欄があるので、ついでに計算しておきましょう。ここで使うのは、ご存じ「SUM」関数ですが、ちょっとした注意がいります。
計算結果は24時間制の時刻データとして返されますので、単純に合計を求めるだけだと、24時間で割った余りだけが表示されてしまうのです。24時間を超えた分も表示させるには、セルの表示形式をユーザー定義します。 |
 |
|
| |
 |
 |
 |
| 1ケ月間の実勤務時間の合計を求めるために、表の最下行に「SUM」関数の数式を設定する |
|
|
|
 |
 |
| |
 |
 |
 |
| 1ケ月間の実勤務時間の合計が「6:46」に! これは明らかにおかしい |
|
|
|
 |
 |
| |
 |
 |
 |
| 「セルの書式設定」ダイアログを呼び出し、「表示形式」タブの「分類」欄で「ユーザー定義」を選択し、「種類」欄に「[h]:mm」と入力する |
|
|
|
 |
 |
| |
 |
 |
 |
| すると、1ケ月間の実勤務時間の合計が「54:46」となり、きちんと24時間を超えた分も表示された |
|
|
|