今までの経過は
その1[LINK]
その2[LINK]
その3[LINK]
その4[LINK]
その4+[LINK]
最終回[LINK]
を見てください。
iworkの関数一覧はこちら[LINK]
15分単位で集計する場合のヒントはこちら[LINK]
いよいよiWorkのNumbersで作るタイムカードの最終回です。
長かったぁ
結論先に言うとエクセルでやった方が良いです...笑
Numbersで時間計算する時のポイントは
今までさんざん言って来た通りで
『24:00』や『26:00』等
日付をマタグ時間計算が(そのままでは)使えない点でした。
色々やってきましたが
前回[LINK]使った
日付を文字列として分解してから
『TIMEVALUEの値として一旦格納して計算する』
方式が一番スマート(結果として)なのかなぁ?
他に良い方法を思いつかないので
これで終了にしちゃいます..w
タイムカードの計算なので
考慮する点は
■0:00〜5:00までの早朝勤務
■休憩時間
■22:00〜翌24:00までの深夜勤務
■8時間以上労働時の残業手当
が必須
決まり事として必要なのは
◆休日勤務日
◆計算上の日の変わり目
が必要です。
今回は
休日は『日曜日』
計算上の日は
『始業時間』24:00=0:00
としています。
業務先によっては『朝7時』とか
ツタヤのレンタルのように朝10:00
とかを日付の変更位置にしている所がありますね。
表計算でのタイムカードの計算は
汎用性をもたせよう!とすると
結構式が長くなり難しです。
ある程度自分の環境や労働条件に
あわせて作りなおすのが吉ですね。
基本9時〜5時で昼に1時間休憩
のような
労働条件なら
早朝等を考慮に入れなくても良いですしね。
では
ファイルはこちら
「timecard_v3d.numbers.zip」をダウンロード[Download]
参考にしてください。
【まとめ】
■ numbersでの時間計算の基本は『TIMEVALUE』
■24時以降の計算が必要な場合は複雑になります。
■ある程度セルフォーマットで制御
「timecard_v4.numbers.zip」をダウンロード
このファイルを元に説明します。
TIMEVALUEの値を求める。
24:00以降の対応には不可欠です
時間部 と 分部 を分割
=IFERROR(VALUE(LEFT(F11,2)),"")で時
=IFERROR(VALUE(RIGHT(F11,2)),"")分
を取得します。
23時より大きい数字24時とか26時とかの場合は
以下のように
TIMEVALUEに1を足して24時以降の時間帯に対応しています。
,IF(U11>23,SUM(1,TIMEVALUE((36-24)&":"&V11))
36-24のTIMEVALUE("12:00")+1
で36時のTIMEVALUE値を求めているわけです。
深夜早朝部は
早朝は
IF(XXXX<TIMEVALUE("5:00")
深夜は
IF(XXXX>TIMEVALUE("22:00")
翌日早朝は深夜の条件に
IF(XXXX<SUM(1,TIMEVALUE("5:00")
ですね。
時間入力の所には
以下のようにフォーマットを設定する事で
『文字列』が入力出来なくなり
必ず『時間』(値)が入力されます。
こうする事で必ず『1バイト半角文字』が
入力されます。
その後の計算で一応『VALUE』を使って整形しています。
分を必ず2桁で表示する
フォーマットも一応設定しています。
(設定しなくても数式の答えは同じですけどね)
タイムカードの計算式の場合は
『深夜早朝』
と
『翌日早朝』
を
加味する計算式の場合はかなり複雑になります。
通常の計算ではエクセルとさほど違いはありませんね。
参考になりましたでしょうか?
でもまぁ
エクセルでやった方が良いかなぁ〜と思いますね。
では
ファイルはこちら
「timecard_v3d.numbers.zip」をダウンロード[Download]
参考にしてください。