出勤退庁が全く不定時な特殊派遣業務の管理作業をファイルメーカーPro9で行っております。
派遣報酬は時間制で、
実働時間(30分単位)×職務別時間制定額+深夜(22時~5時)従事時間×深夜加算定額
により構成されています。
不定時な出勤退庁の例は下記のとおりです。
(勤務)開始時刻~終了時刻(実働時間、深夜時間)
9:00~18:00(実働9.0H、深夜0)
20:00~3:00(実働7.0H、深夜5.0H)
23:00~7:30(実働8.5H、深夜6.0H)
23:30~4:00(実働4.5H、深夜4.5H)
1:00~4:30(実働3.5H、深夜3.5H)
2:00~9:00(実働7.0H、深夜3.0H)
21:00~7:00(実働10.0H、深夜7.0H)
まず実働時間の計算ですが、入力は上記の時刻どおり行うため、翌日にまたがる勤務のときはそのままだと実働時間がマイナスになります。 これを避けるため、その場合は終了時刻に1日(86400秒)を加算する次の式を定義しております。
出退庁時刻等の定義は、次のとおりです。
出勤時刻→「開始時刻」
退庁時刻→「終了時刻・入力」と「終了時刻・換算」
実働時間→「実働時間・時刻」と「実働時間・数値」
終了時刻・換算=If( 開始時刻>終了時刻・入力; 終了時刻・入力 + 86400; 終了時刻・入力 )
そして実働時間は
実働時間・時刻=終了時刻・換算-開始時刻
とし、これを数値化するため、
実働時間・数値=Hour(実働時間・時刻 ) + Round(Minute(実働時間・時刻) / 60; 2 )
としております。
さて最大の問題は前記実働時間中の深夜従事時間の算出です。
まずフィールド定義を
深夜開始=Time(22; 0;0)
深夜終了=Time(5; 0; 0)
深夜終了29時=Time(29; 0; 0 )
深夜従事時間=深夜時間
深夜時間の数値=深夜時間・数値
とし、次の式により深夜従事時間を求めています。
深夜時間=If(終了時刻・換算 > 深夜開始; If( 終了時刻・換算> 深夜終了29時; 深夜終了29時;終了時刻・換算 )-If( 開始時刻>深夜開始; 開始時刻; 深夜開始 );0) + If( 終了時刻・換算>深夜終了; 深夜終了; 終了時刻・換算 )- If(開始時刻 <深夜終了; 開始時刻; 深夜終了 )
これを数値化するため、
深夜時間・数値=Hour(深夜時間) + Round( Minute(深夜時間) / 60; 2 )
以上が一連の式の流れですが、これらの式は何とも冗長で分かりにくいので、もっと簡単で分かりやすい計算式ができないか、悪戦苦闘しましたがいい智恵が浮かびません。
思い余ってファイルメーカーの時間計算に詳しい方のご指導をいただきたく投稿しました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
条件判断を何でもかんでもif関数に頼ると冗長になります。
ETC時間帯割引のように数直線を描いてみるのが幸せになる第一歩ですよ。
5:00 22:00 29:00
├──╂──────────╂───────╂────┤
┣━━━━━━━━━━━━━━┫
┣━━━━━━━━┫
┣━━━━━━━━━━━━━━┫
最初の深夜加算は開始時刻と5:00の早い方から始まり、終了時刻と
5:00の早い方で終わります。後の深夜加算は開始時刻と22:00の遅い
方から始まり、終了時刻と22:00の遅い方で終わるけど29:00で頭打
ちですね。
この「早い方/遅い方」はmin関数やmax関数で書けます。
開始時刻と5:00の早い方 =min(開始時刻;time(5;0;0))
開始時刻と22:00の遅い方 =max(開始時刻;time(22;0;0))
終了時刻と22:00の遅い方だけど29:00で頭打ち
=min(max(終了時刻・換算;time(22;0;0));time(29;0;0))
整理すると、
深夜時間 = min(終了時刻;深夜終了)-min(開始時刻;深夜終了) +
min(max(終了時刻・換算;深夜開始);深夜終了29時)-max(開始時刻;深夜開始)
こんな感じですかね。
この回答への補足
早速のご回答ありがとうございました。
Min・Max関数を使用するという考え方は何となく分かるような気がしましたので、早速お示しの計算式で試算しましたが、残念ながら正しい答が得られませんでした。
誤答の例は次のとおりです。
20:30~3:00=3.0H(正解5.0H)
23:30~4:30=5.0H(正解5.5H)
23:00~1:30=▲1.0H(正解2.5H)
18:30~3:30=4.0H(正解5.5H)
誤りの原因は目下研究中ですが、結論を出すのにちょっと時間がかかりそうなので、とりあえず試算結果のみお知らせして、お礼に代えさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- 求人情報・採用情報 介護の求人についてお伺いしたいです。 現在フリーターでアルバイトを探しており、グループホームの求人を 1 2023/03/20 23:15
- 労働相談 深夜の時間帯が所定労働時間の場合の深夜労働手当の計算方法 例えば、時給1500円の従業員が21時〜3 2 2023/05/07 20:06
- 時計・電卓・電子辞書 深夜になると自動時刻合わせがあり、その状態を針が止まる事で伝える電波掛時計があります。 自動時刻合わ 1 2022/03/27 01:37
- ルーター・ネットワーク機器 Linkstation のスリープタイマー設定方法がわかりにくい 1 2023/01/07 13:34
- 人事・法務・広報 みなし残業制の深夜残業や休日出勤の割増賃金の計算方法を教えてください。 1週間の所定労働時間は40時 5 2023/05/04 16:21
- その他(Microsoft Office) エクセル 条件付き書式 日をまたぐ塗りつぶし 1 2023/01/13 18:00
- 労働相談 24時間勤務が断続的労働になった場合の給与。 元々24時間の内16時間が勤務で休憩と仮眠で20万円の 1 2022/07/26 11:05
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Susieで画像が表示されません
-
Mp3tag内のDiscogsサーバー接続...
-
シャットアウト時のacrobat IE...
-
VBA「別のプログラムでOLEの操...
-
realsyncで「"は整数ではありま...
-
解凍後の.zipファイルは消して...
-
結合解凍
-
拡張子をtxtからdatに
-
ワードのデータをUSBに保存した...
-
誤ってAdobe ReaderでZIPファ...
-
rtl70bplが見つからないと表示...
-
フォルダアイコンの変更でpngを...
-
エクセルのVBAでクリップボード...
-
Excelで「同じ名前のファイルが...
-
解凍すると中身が消えました。
-
CDから読み込んだタイトル名...
-
4.7GB以上のデータをDVDに書き...
-
Ziを開けるには
-
ファイルを閉じても開いている...
-
CドライブのAPSETUPフォルダは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA「別のプログラムでOLEの操...
-
ファイルメーカーによる勤務時...
-
Critical Errorについて(パソ...
-
Susieで画像が表示されません
-
Mp3tag内のDiscogsサーバー接続...
-
Microsoft Visual C++ Runtime ...
-
realsyncで「"は整数ではありま...
-
FTPでアップロードすると”Er...
-
オーディオサービスが実行され...
-
CPU使用率が100%になる
-
MAC OS 10.5.8のパソコンのsafa...
-
POWER2GOを起動するとエラーが...
-
モジュールのページ違反ってな...
-
ATAIPエラーに関してです
-
解凍後の.zipファイルは消して...
-
LOL Replayで試合を再生しよう...
-
Excelで「同じ名前のファイルが...
-
ワードのデータをUSBに保存した...
-
“.vbs”のファイルが実行できない
-
誤ってAdobe ReaderでZIPファ...
おすすめ情報