
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
より高い知識が必要ですね。
時間とはシリアル値で管理されているのはご存知ですか?
ま、それはともかく発想を変えてみましょう。
私なら登録時に、開始時間と終了時間から、勤務時間と休憩時間と時間外とを計算し、それぞれ登録しますね。
その方が楽ですよ。
時間も時間と分を分けて計算した方が分かりやすいです。
No.3
- 回答日時:
' 計算するほう
Function CalcWorkingTime(aWorkingDate As Date, aTiem1 As Date, aTime2 As Date) As Variant
Dim time1 As Date
Dim time2 As Date
Dim midTime As Date
time1 = CDate(aWorkingDate & " " & aTime1) ' 開始日時
time2 = CDate(aWorkingDate & " " & aTime2) ' 終了日時
midTime = CDate(aWorkingDate & " " & "22:00") ' 深夜残業に突入する日時
' 午前様まで頑張っちゃった場合は
If time1 > time2 Then
time2 = DateAdd("d", 1, time2) ' 日付を 1日進めて正しい終了日時にする
End If
Dim returnValue(1) As Variant
If midTime < time2 Then
' 深夜残業しちゃった場合
returnValue(0) = DateDiff("n", time1, midTime) ' 通常時間外を算出
returnValue(1) = DateDiff("n", midTime, time2) ' 深夜残業時間を算出
Else
' 深夜残業しなかった場合
returnValue(0) = DateDiff("n", time1, time2) ' 通常時間外を算出
returnValue(1) = 0 ' 深夜残業時間は 0
End If
CalcWorkingTime = returnValue
End Function
' 呼び出し側
Sub hoge()
Dim dat as Variant
dat = CalcWorkingTime("2016/6/1", "17:00", "23:00")
MsgBox "通常時間外は " & dat(0) & "分"
MsgBox "深夜残業は " & dat(1) & "分"
End Sub
1つ目の引数は就業計算日
"2016/6/1" のように年月日を与える。
2つ目の引数は開始時刻
質問者の大前提として朝の始業時刻じゃなくて時間外が始まる 17時を指定したいみたいなので、"17:00" の固定値でもいいんだろうけどね。
3つ目の引数は終了時刻
質問文どおり "23:00" とか。
午前零時を超えてしまった場合もとりあえず "2:30" とか入れてやる。
この 3つの引数を得て通常時間外と深夜残業を配列で返す。
> ちなみに土日祝の場合、時間外は深夜帯になるのでその場合も教えて頂けると幸いです。
自力で頑張ってください。
「土日祝」は「会社が休みの日」という意味に変換する必要があり、会社の休日は何かの形でカレンダー情報を持っておかなければならない。
就業計算日が会社の休日であれば、開始時刻から終了時刻までが丸々深夜残業っていう風に計算すればいいと思う。
No.2
- 回答日時:
(残業終了時間 と 深夜残業開始時間 のどちらか小さい方)ー(残業開始時間 と 深夜残業開始時間 のどちらか小さい方)
MIN("23:00" , "22:00") - MIN("17:00 , "22:00")
で通常時間外の時間を、
(残業終了時間 と 深夜残業開始時間 のどちらか大きい方)ー(深夜残業開始時間 と 残業開始時間 のどちらか大きい方)
MAX("23:00" , "22:00") - MAX("22:00" , "17:00")
で深夜時間外の時間求められるのではないか?
Excelの関数を使うならMIN関数とMAX関数だけでできる基本的な計算です。
・・・
質問文をそのまま計算式にすると
通常時間外の時間を求めるとき、
(残業終了時間 と 深夜残業開始時間 のどちらか小さい方)ー(残業開始時間)
になりますが、
残業開始時間が22:00より後になることも考慮する必要があるので、(残業開始時間)の部分を(残業開始時間 と 深夜残業開始時間 のどちらか小さい方)としています。
なお、
残業開始時間 < 残業終了時間
であることが大前提です。
時間入力時にこのチェックをすることも忘れないでください。
このあたりのアルゴリズムはご理解いただけるでしょうか。
難しいようであれば、市販の時間管理ソフトを購入されることを自分からも勧めます。
No.1
- 回答日時:
こんにちは
Accessで自作作成にとらわれず、市販のソフトの導入も検討してみてください。
初期導入費用はかかりますが、そのほうが、新右衛門さん自作よりもコストや性能や使いってが良い場合もあります。
市販ソフトで対応できない事をしたくなったときにこそ、新右衛門さんの出番です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- その他(ビジネス・キャリア) 日報の実務労働時間の集計について困っています。 2 2023/06/09 19:00
- Visual Basic(VBA) マクロで設定時刻の入力がわかりません 2 2022/03/29 02:24
- Excel(エクセル) エクセルで休憩時間を引いての作業計画予定表の作成の仕方 2 2023/07/24 14:11
- アルバイト・パート パートで1時間当たりの時給が違う場合に自動で給料計算する方法はありませんか? 6 2023/08/28 13:46
- Excel(エクセル) エクセルでの延長表計算式を教えてください 5 2022/12/21 12:20
- Excel(エクセル) エクセルで休憩時間を引く時と、引かない時の数式 3 2022/11/05 11:48
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
- Excel(エクセル) エクセルの早退時間を計算したいです。計算はうまくいっているようですが… 1 2022/12/26 16:22
このQ&Aを見た人はこんなQ&Aも見ています
-
accessで残業時間計算
Access(アクセス)
-
ACCESSの時刻の引き算
Access(アクセス)
-
Accessで24時間を超える時間の入力ができない。
Excel(エクセル)
-
-
4
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
Accessの数値から時間に変換する時点で困っています。
その他(データベース)
-
7
ACCESSの時間帯の抽出について
その他(Microsoft Office)
-
8
ACCESSで1月1日~12月31日までの日付を入れる方法
その他(データベース)
-
9
Accessで、定型入力を使って年と月のデータだけ入力したい
Access(アクセス)
-
10
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
11
アクセスのクエリで秒→時間、時間→秒に変換したい
Access(アクセス)
-
12
ACCESS で深夜計算
その他(データベース)
-
13
[MS Access]クエリで変換 hhmm(数値型)⇒hh:mm(日付/時刻型)
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ACCESS】未定義関数が発生。...
-
コンピューターで2進法が採用...
-
ファイルメーカーで小数点以下...
-
Excel 隣のセルが空白以外の場...
-
エクセルで四捨五入ではなく、5...
-
計算結果をCASE WHENで判断した...
-
アクセスである時点での年齢を...
-
Access2000クエリで、起算日か...
-
アクセスについて
-
FileMaker7 の日付関数の使い方
-
エクセルでeのマイナス乗の計算...
-
ファイルメーカーPro7での経過...
-
accessからsqlserverへの移行に...
-
整列の比較回数を表す数式でよ...
-
ACCESSで生年月日より年齢を出...
-
VBAでエクセルシートを更新...
-
差し込み印刷に当日の日付が入...
-
エクセルのチェックボックスを...
-
「24日の0時」って・・・
-
Excel関数 「日付を入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 隣のセルが空白以外の場...
-
コンピューターで2進法が採用...
-
アクセスである時点での年齢を...
-
【ACCESS】未定義関数が発生。...
-
ACCESSでの時間外計算方法
-
計算結果をCASE WHENで判断した...
-
ファイルメーカーで小数点以下...
-
ACCESS で深夜計算
-
エクセルで四捨五入ではなく、5...
-
ACCESSのバグ?
-
エクセルでeのマイナス乗の計算...
-
ファイルメーカーで学年を表示...
-
Mysql 誕生日順に並べたい
-
チェックデジットを付加したデ...
-
ファイルメーカーで時間の表示...
-
ファイルメーカーPro7での経過...
-
SQL Server での小数点以下の「...
-
アクセスについて
-
Accessで子供の学年齢を求めた...
-
SQLServerで変数を含んだ数式の...
おすすめ情報
ちなみに土日祝の場合、時間外は深夜帯になるのでその場合も教えて頂けると幸いです。