働いた分を正しく受給できないので問題になると言えば問題になるのではないか?と思いますがこの方式をとっている所は多いのではないでしょうか?方法は二つありますよね◆入力時に15分単位に整形する方法と◆入力はタイムカードの打刻通りで計算24時以降に対応する場合に有効な一旦時と分をわけて計算する場合はこのように『分』をVLOOKUPで整形してしまうのが手っ取り早いです。一部計算式変更して36時以上に対応しました。「timecard_v4a.numbers.zip」をダウンロード[Download]でも一般的にはif分で分岐計算するほうが一般的ですねポイントは始業時の45分以降の分帯を次の時間へ繰り上げる処理です。今までの経過はその1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。iworkの関数一覧はこちら[LINK]15分単位で集計する場合のヒントはこちら[LINK]いよいよiWorkのNumbersで作るタイムカードの最終回です。日付をマタグ時間計算が(そのままでは)使えない点でした。日の変わり目が必要です。計算上の日は『始業時間』24:00=0:00としています。業務先によっては『朝7時』とかツタヤのレンタルのように朝10:00とかを日付の変更位置にしている所がありますね。表計算でのタイムカードの計算は汎用性をもたせよう!とすると結構式が長くなり難しです。ある程度自分の環境や労働条件にあわせて作りなおすのが吉ですね。基本9時〜5時で昼に1時間休憩のような労働条件なら早朝等を考慮に入れなくても良いですしね。ファイルはこちら「timecard_v3d.numbers.zip」をダウンロード[Download]参考にしてください。■24時以降の計算が必要な場合は複雑になります。「timecard_v4.numbers.zip」をダウンロードこのファイルを元に説明します。TIMEVALUEの値を求める。分割=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]参考にしてください。今までの経過はその1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。iworkの関数一覧はこちら[LINK]を見てください。15分単位で集計する場合のヒントはこちら[LINK]ここ数回で問題になっているのは24:00を超える時間の指定についてです。今回は『文字列を操作〜分割』する事で24時以降の時間にも対応する事を考えてみます。作りかけの途中のファイルを見てください。表示するようにしておきます。=LEFT(F11,2)で時間を『左から』『2文字』取得します。前回等でも問題になって『:』の区切り文字は『VALUE』で変換出来ないのでこの方法は使えませんでした。続いて『分』側の整形にうつります。先の『時』部分と同じ発想で=RIGHT(F11,2)でHH:MMの時間文字列を『右から』『2文字』を取得して=VALUE()で包んで数値としておきます。この=VALUE()の処理は入力される時間が23:59までなら必要無い処理です。セルのカスタムフォーマットで『時間』指定しているので23:59までの入力は『かな』で入力しても『時間』に自動的に変換されます。書いたようにNumbersは『必ず日付時刻形式』で時間を持つ時間には必ず日付が必要なので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時を超える勤務時間の集計に対応する■残業時間に対応するタイムカード計算が出来そうですね。■労働時間が8hを上回った分を残業時間を計算すれば良いですね。今までの経過は今までの経過はその1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。iworkの関数一覧はこちら[LINK]15分単位で集計する場合のヒントはこちら[LINK]今回は深夜時間帯での『休憩』に対応します。考え方は↑のように時間帯を2つに分けて考えれば良いですね。時間帯Aと時間帯Bでそれぞれ『勤務時間』と『深夜時間』を求めれば良い事になります。『休憩時間を求めない』にしたわけです。ポイントって言うか、なぜこんなに時間計算が変な事になるんでしょ。既定の日付システムが異なります。Macintosh版でもExcelとNumbersでは関数に互換が無いものがあります。先にも書きましたがMac版のExcelでは=TIMEVALUE("24:00")=0で0(ゼロ)を返します。Numbersでは=TIMEVALUE("24:00")=エラーになってしまいます。エラーになるので『エラーの制御』をしなくてはなりません。数字は『1バイト半角』入力にしても区切り文字としての『:』コロンの入力について『2バイト全角の:』と『1バイト半角の:』を考慮に入れるだけでもエラー制御が2重に必要になってしまいます。//『2バイト全角の:コロン』の2通りだけの制御をしておきます。次に考えるのがどんな『パターン』があるかな?って事でしょうか?ざっと考えただけでもこのぐらいの種類の入力パターンが想定されます。(中にはありえない感じのもありますけど..w)これらを考慮して計算式を作成していきます。基本は前回の計算と同じ(TIMEVALUE(終了時間)-TIMEVALUE(開始時間))/TIMEVALUE("1:00"))で時間を数字として定義できますね。今回のサンプルファイルはこちらです。numbersデータをダウンロード[Download]参考にしてください。今までの経過は今までの経過はその1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。iworkの関数一覧はこちら[LINK]15分単位で集計する場合のヒントはこちら[LINK]Numbersは09です。Numbersでもエクセルでもタイムカード式の時間の計算のポイントは1:00=1=1時間0:30=0.5=30分で最後に集計したい。そこで『TIMEVALUE』関数を使って計算するわけです。=TIMEVALUE("1:00")は0.0416666666666667=TIMEVALUE("0:15")は0.0104166666666667とする事でTIMEVALUEの値が求められますそこで値を1時間の値割ります。15分は0.25時間を求める事が出来るわけです。これがタイムカード式に時間を計算する時のポイントになります。改善してほしいなぁ...汗で出来上がったのが日にちをまたぐ勤務に対応した物です。やれば出来るのですが計算式が異常に長くなってしまうので入力部を2つにわける事で対応しました。これを参考に作り込んでみてください。『○』の数を数えるで計算しています。=COUNTIF(E11:E41,"○”)で出勤日数をカウントしています。万年カレンダーの日にちの最大値を求める事で『その月は何日まであるのか?』を求めています。残業日数を求める所で使っています。COUNTで整数のあるセルの数を数えています。それ以外の所には""が入っているからです。=COUNT(O11:O41)実はこのタイムカード式は『休憩を深夜時間に取った』場合に対応していません。急いでザッと作ったので計算式に誤りがあるかもしれませんので参考にしてもらってご自分で作ってみてください。今までの経過はその1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。8時間を超えた分を計算=IF(労働時間>8,(労働時間-8),"")な計算になります。曜日欄で判断させています。=IF(曜日="日曜日",労働時間,"")で良いでしょう今回は『タイムカード』を目指していますのでタイムカードらしい事もします。■平均労働時間が8時間を超えたら『赤』表示する。■さらに80時間を超えたら『赤文字』表示にしています。タイムカード式【その1】その1[LINK]その2[LINK]その3[LINK]その4[LINK]その4+[LINK]最終回[LINK]を見てください。タイムカード形式の時間の計算をしてみましょう。Numbersのバージョンは09です。「TIME.zip」をダウンロード上の画像を見てください。Numbersの時間の計算にはちょっとクセがあってエクセルユーザーにはかなり違和感があるかもしれません。【1】引算=C8-C7って形式で特に何も考えずにセルの書式設定も一緒に変更されます。これは問題ないですね。足し算自体は出来てるのですが上の引算の時とはセルの書式が異なっています。【3】引算の結果からさらに引算するとエラーになってしまいます。タイムカード式の計算を考えていますので『休憩時間』を引く事がこのままでは出来ない事になります。関数を利用して計算します。24:00が1となります。【1】1時間のTIMEVALUE1:00のTIMEVALUEは『0.0416666666667』となります。これは=1÷24時間ですね【2】TIMEVALUE値を時間に変更します。TIMEVALUEの値を/0.041666666667で時間表示になりますね。【3】ROUND関数を足して小数点以下2位で四捨五入します。【1】で得た1時間のTIMEVALUEの値が割り切れない数値なので四捨五入して値を整形します。【4】TIMEVALUE値として引算をします。【5】TIMEVALUE値は24:00に対してエラーを返しますので24:00だった1にするIF文を付け加えます。※TIMEVALUEの値は24:00を許容しませんこれが時間計算をややこしくしています。タイムカード計算を目的としていますので『勤務時間は15分単位を基準』としました。今回のサンプルでは『15分刻み』で時間計算するそんな訳ですので『0.0104166666666667』で割っていますこれは『TIMEVALUE("0:15")』って事です。分で計算するなら必要無い計算です。10分刻みで計算する歯場合TIMEVALUE("0:10")の戻り値である0.00694444444444444を使えば良い事になります。「calendar2.zip」をダウンロードnumbersのタイムカードらしくなりました。後は『残業』と『深夜』の計算になります。WithBookMarksPSDsc[LINK]iPhoto用テンプレート[LINK]郵便バーコードについて[LINK]QRバーコードについて[LINK]法令データ[LINK]戸籍統一文字[LINK]JIS検索[LINK]。