出勤退庁が全く不定時な特殊派遣業務の管理作業をファイルメーカー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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ファイルメーカーで時間の表示、計算
その他(データベース)
-
ファイルメーカーでCountifの様な方法ありますか?
その他(データベース)
-
FileMakerで、フィールドの値が空欄だった時に0を返す計算式
その他(データベース)
-
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Google Chromeが使えなくなりま...
-
VBA「別のプログラムでOLEの操...
-
解凍後の.zipファイルは消して...
-
拡張子をtxtからdatに
-
誤ってAdobe ReaderでZIPファ...
-
先日ぬきたし2を購入したのです...
-
Excelで「同じ名前のファイルが...
-
【初心者です】izhというファイ...
-
ファイルを閉じても開いている...
-
エクセルファイルをショートカ...
-
LANの共有フォルダ内の実行ファ...
-
apkファイルをダウンロードして...
-
Ziを開けるには
-
エクセルのVBAでクリップボード...
-
ワードのデータをUSBに保存した...
-
ファイルのあけ方
-
圧縮ファイルの解凍前と後の容...
-
Total Uninstall以外のアンイン...
-
破損したISOのファイルを修復す...
-
txtデータをjavaという...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA「別のプログラムでOLEの操...
-
Susieで画像が表示されません
-
realsyncで「"は整数ではありま...
-
モジュールのページ違反ってな...
-
ファイルメーカーによる勤務時...
-
Microsoft Visual C++ Runtime ...
-
MAC OS 10.5.8のパソコンのsafa...
-
オーディオサービスが実行され...
-
Critical Errorについて(パソ...
-
POWER2GOを起動するとエラーが...
-
Mp3tag内のDiscogsサーバー接続...
-
VS2008 DL可能なソフト名
-
FTPでアップロードすると”Er...
-
★☆不正な処理・・・って・・・?
-
outlook express5の強制終了に...
-
ウィルスソフト起動時にエラー...
-
パソコンの使用中に
-
CPU使用率が100%になる
-
突然OUTLOOK EXPURESSが応答し...
-
アプリケーションエラー表示
おすすめ情報