【Numbers】時間の計算 タイムカード 【その4+】
今までの経過は
その1[LINK]
その2[LINK]
その3[LINK]
その4[LINK]
その4+[LINK]
最終回[LINK]
を見てください。
iworkの関数一覧はこちら[LINK]
を見てください。
15分単位で集計する場合のヒントはこちら[LINK]
ここ数回で問題になっているのは
24:00
を超える時間の指定についてです。
今回は『文字列を操作〜分割』
する事で
24時以降の時間にも対応する事を考えてみます。
まずは
作りかけの途中のファイルを見てください。
「timecard_v3a.numbers.zip」をダウンロード
まずは
時間を
時
と
分
に分
HH:MM
カスタムフォーマットを使って
9:00
と
入力しても
09:00
とゼロサプレス[LINK]表示するようにしておきます。
=LEFT(F11,2)
で
時間を
『左から』『2文字』取得します。
このままだと
『半角1バイト』と『全角2バイト』
の判定がややこしいので
=VALUE()で包んで
文字列→数値 をしておきます。
前回等でも問題になって『:』の区切り文字は『VALUE』で変換出来ないので
この方法は使えませんでした。
続いて『分』側の整形にうつります。
先の『時』部分と同じ発想で
=RIGHT(F11,2)
で
HH:MMの時間文字列を
『右から』『2文字』を取得して
=VALUE()で包んで
数値としておきます。
この=VALUE()の処理は
入力される時間が
23:59までなら必要無い処理です。
セルのカスタムフォーマットで『時間』指定しているので
23:59までの入力は
『かな』で入力しても『時間』に自動的に変換されます。
しか〜し
カレンダーの回で[LINK]書いたように
Numbersは
『必ず日付時刻形式』で時間を持つ
時間には必ず日付が必要
なので
26:00は翌日なので
日付が変わるわけです
同日とは処理出来ない。
1月1日の26:00時は 1月2日の2時
としてしか表示出来ない
そうなんです
Numbersでは
24:00は『翌日』なのです。
エクセルでは先に書いたように
日付や時間は
『日付連番』+『TIMEVALUE値』です。
エクセルでは36時等のTIMEVALUE値がありますので
このような事にならないわけです。
脱線しましたが
HH:MM形式の時間の入力を
HHとMM
に分割しました。
では
この分割されたHHとMMを元に
TIMEVALUEの値にすれば良いわけです。
HH:MM
単純にTIMEVALUEに戻すなら
TIMEVALUE(HH&":"&MM)
で
十分なわけですが
24時以降の場合は
SUM(1,TIMEVALUE((HH-24)&":"&MM))
このように
24:00のTIMEVALUE値である『1』を
例だと
36-24=の12のTIMEVALUEに足す
事で
36時のTIMEVALUE値『1.5』を求める事が出来るわけです。
これで
■深夜勤務時間中の休憩に対応する
■24時を超える勤務時間の集計に対応する
■残業時間に対応する
タイムカード計算
が出来そうですね。
■【時間帯A】労働時間
■【時間帯A】深夜時間
■【時間帯B】労働時間
■【時間帯B】深夜時間
■それぞれの合計
■労働時間が8hを上回った分を残業時間
を計算すれば良いですね。
続く (続かないかもしれない...w)
| 固定リンク
「iWorkNumbersTimecard」カテゴリの記事
- 【Numbers】時間の計算 タイムカード 【15分単位】(2010.07.24)
- 【Numbers】時間の計算 タイムカード 【最終回まとめ】(2010.06.07)
- 【Numbers】時間の計算 タイムカード 【その4+】(2010.06.06)
- 【Numbers】時間の計算 タイムカード 【その4】(2010.06.04)
- 【Numbers】時間の計算 タイムカード 【その3】(2010.05.31)
この記事へのコメントは終了しました。
コメント