- 締切済み
日報の時間計算
お世話になっております。 Windows 7 Access 2007 Private Sub 完了時間_AfterUpdate() Dim StartTime, EndTime, Kugiri, tuujou, Soukinmu, shinyakugiri, SinyaTime As Long tuujou = 8: '通常勤務時間 8時間 Kugiri = 5: '区切り時間 午前5時 shinyakugiri = 22: '深夜区切り 22時 '処理がわかりやすくするために時刻(m日)を数値(n時間)に変換 StartTime = Me.開始時間 * 24 EndTime = Me.完了時間 * 24 '完了時間が 0時以上 5時以下 の場合、24時間足す。 If EndTime >= 0 And EndTime <= Kugiri Then EndTime = EndTime + 24 End If '深夜計算 SinyaTime = EndTime - shinyakugiri - Me.休憩 If SinyaTime > 0 Then Me.深夜 = SinyaTime Else Me.深夜 = 0 End If '総勤務時間算出 Soukinmu = EndTime - StartTime - Me.休憩 '(Me.sinyaは前の処理で、深夜にかかっていない場合0なので、適切に計算される) Soukinmu = Soukinmu - Me.深夜 '総勤務時間が通常勤務時間以下の場合、 '残業時間は0、勤務時間は総勤務時間。 '総勤務時間が通常勤務時間より大きい場合、 '残業時間=総勤務時間-通常勤務時間 勤務時間=通常勤務時間 If Soukinmu <= tuujou Then Me.残業 = 0 Me.勤務時間 = Soukinmu Else Me.残業 = Soukinmu - tuujou Me.勤務時間 = tuujou End If '工数算出 'If EndTime <= 17 Then If Soukinmu <= tuujou Then 工数 = 勤務時間 / tuujou Me.勤務時間 = Soukinmu Else 工数 = tuujou / 8 End If End Sub このコーナーで教えていただいた日報の時間計算ですが、とてもうまく計算できました。ですが、問題発生したため、修正が必要ですけどどいう風に変更すればいいか分からなくてまた質問させていただきます。 言葉でうまく説明出来ないので、例を挙げます。 2011/12/09 Aさんの場合 工事番号 日付 名前 開始 終了 勤務時間 残業 0001 12/9 A 8:00 17:00 8 0002 12/9 A 17:00 20:00 3 そんな感じで日報に表示させたいですが現在の日報はこんな感じです。 工事番号 日付 社員ID 名前 開始 終了 勤務時間 残業 0001 12/9 1 A 8:00 17:00 8 0002 12/9 1 A 17:00 20:00 3 今のコードなら修正できるでしょうか? 素人の考えですが、社員IDと日付が同じなら勤務時間の集計で残業時間になるということですがどこに何を書けば全然わかなかったです。 どなたか教えていただけませんか? よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 日報計算
お世話になっております。 うまく説明できませんが以下のデータがありますが、 ID 日付 社員ID 開始 終了 時間 残業 1 12/1 001 8:00 17:00 8 2 12/2 001 17:00 20:00 3 本当は下のように作りたいです。 ID 日付 社員ID 開始 終了 時間 残業 1 12/1 001 8:00 17:00 8 2 12/2 001 17:00 20:00 3 ですのでSQLでつくってみました SQL = ("SELECT T_作業日報明細.日付, T_作業日報明細.個人ID,Min(T_作業日報明細.[Start Time]) AS [Start Timeの最小], Max(T_作業日報明細.[End Time]) AS [End Timeの最大], Sum(T_作業日報明細.時間) AS 時間の合計" & "FROM T_作業日報明細" & "GROUP BY T_作業日報明細.日付, T_作業日報明細.個人ID;") ですが以下のコードはVBAでどいう風に書けばいいか分かりません。 もし日付と社員IDが同じなら 時間の合計 = EndTimeの最大 - StartTimeの最小 - Me.休憩 If 時間の合計 <= 8 Then Me.残業 = 0 Me.勤務時間 = 時間の合計 Else Me.残業 = 時間の合計 - 8 Me.勤務時間 = 8 End If そうではない場合 Soukinmu = EndTime - StartTime - Me.休憩 If Soukinmu <= 8 Then Me.残業 = 0 Me.勤務時間 = Soukinmu Else Me.残業 = Soukinmu - 8 Me.勤務時間 = 8 End If めちゃくちゃだと思いますがご指導をよろしくお願い致します。
- 締切済み
- その他(データベース)
- 日報の時間計算を行う関数について
勤務時間を管理の日報を作成しています。以下の条件をつけて出勤時間と退社時間を記入するだけで1日の総勤務時間を表示してくれる関数をご教示お願いします。 ・9:00出勤で18:00定時退社で15分単位で表示 ・セル(開始)は9:00、(終了)に18:00以降の時間を手入力 ・セル(工数)に関数で総勤務時間を計算 ・9:00から18:00までに1時間15分の休憩をとるため、自動的に差し引いて計算 ・残業は18:15からカウントされるため、18:30以降残業して退社した場合は15分差し引いて計算 ・残業最終時間0:00までとして計算 ・セル(開始)、(終了)に9:00~0:00の15分単位の時間以外を入力はない前提とします ・遅刻、早退による変則時間の入力はない前提とします 【例】 (開始)9:00、(終了)18:00の時は(工数)に7.75 (開始)9:00、(終了)18:15の時は(工数)に7.75 (開始)9:00、(終了)18:30の時は(工数)に8 (開始)9:00、(終了)0:00の時は(工数)に13.5 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESS で深夜計算
いつもお世話になっております。 Access 2007で日報を作っていますが深夜計算のコードは次のように書きましたがうまくできなくて、どこでどんな間違いかも分からないです。教えていただきたいです。 If 22 <= 完了時間 <= 5 Then '完了時間は22時から朝の5時までなら深夜計算 深夜 = (完了時間 - #10:00:00 PM#) * 24 - 休憩 Else 深夜 = 0 End If 全然VBAのことが分からなくて書きましたので教えていただくと助かります。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- 【EXCEL2007】複雑な時間計算
【EXCEL2007】複雑な時間計算 アルバイトの時給計算表を作成しています。 詰まってしまったところがあるので、ご教示ください。 勤務時間は長時間に渡る者もおり、勤務時間中の時給設定が 「通常勤務(D1)」,「深夜勤務(E1)」,「超深夜勤務(F1)」,「残業(G1)」 と4パタンあります。 店舗の稼働時間としては、17:00~翌8:00までとなり、 A1:出勤時間 B1:退勤時間 C1:休憩時間 に時間を入力(午前1時の場合は25:00)することによって、 各パターンのセルに実際に勤務した時間を自動表示させたいと 思っています。 例)17:00~32:00まで勤務した場合: D1=5:00 E1=5:00 F1=2:00 G1=3:00 それぞれの時給パターンの条件は以下です。 ・通常勤務:17:00~22:00 ・深夜勤務:22:00~29:00 ・超深夜:そのシフトでの勤務時間が8時間を超える者で8時間を超えた時間から29:00までの時間 ・残業:29:00~32:00 ・休憩はどのタイミングでとっても、通常勤務時間から引く事とします。 通常勤務(D1)は以下の通りにすることで、表示することができました。 D1=IF(A1>=TIMEVALUE("22:00"),0,IF(D6<=TIMEVALUE("22:00"),(B1-A1),("22:00"-A1-C1))) が、残りの時給パターンの条件分岐が自分には複雑で詰まってしまいました。 そのものズバリの条件式を教えていただけると幸いですが、 ヒントだけでも、ご教示いただけませんでしょうか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Access で作業日報
いつもお世話になります。 OS:Windows 7 Access 2007 このコーナーで作業日報の時間計算について質問させていただきました。 教えていただいたのは、クエリで関数に入れて、フォームを作成すれば、うまく時間が表示されましたが新規入力ができませんでした。 今回はVBAでした方がいけるのではないでしょうかと思いましたがコードの書き方が分からなくて助けてもらいたいです。 フォームに名前・開始時間・完了時間・休憩時間・勤務時間・残業時間・工数とそれぞれテキストボックスがあります。 勤務時間=開始時間-完了時間 8:00 - 17:00 =8時間 休憩時間 = 12時~13時 残業時間=17:00以降 工数は8時間=1工=勤務時間 開始時間と完了時間を入力したら、勤務時間は8時間で残りは残業時間を自動的計算できようにしたいです。 よろしくお願い致します。
- ベストアンサー
- その他(データベース)
- エクセル 就業時間計算について
エクセルで勤務時間計算をしたいと思っています。 ですが、どうしてもうまく計算ができません・・・ どなたかご存知の方、お力をかしてください<m(__)m> 例) A B C D E 出社時間 退社時間 通常残業 深夜 合計(勤務合計) 1 22:00 10:00 2 4:00 14:00 3 23:00 15::00 勤務時間が不規則なので、出勤時間まちまちです・・・ それと、通常残業と、深夜勤務の時間をふりわけが出来れば尚助かります。 どうか C D E に入れる関数を教えてください
- ベストアンサー
- その他([技術者向] コンピューター)
- 最新データ取得
いつもお世話になります。 Access 2007のコードを教えていただきたいです。 Access で社員単価管理を作成しています。 クエリで社員の単価を計算させて、日報フォームに表示させることができました。以下のコードで If Not IsNull(Me![個人ID]) Then Me![工数単価] = DLookup("日給", "Q_社員別給与最新日付", "[個人ID]=" & Me![個人ID]) End If 社員の単価は上がる場合がありますので、社員単価入力テーブルから最新の日付のデータを取得するため、クエリを作成しました。 これでうまく行くと思ったら、問題発生しております。 日報フォームのデータを修正する時、最新日付の単価も変わってしまいます。 うまく説明できないですので、以下のようです 社員単価入力テーブル 日付 個人ID 原価金額 20110401 01 6400 20110701 01 8000 日報フォーム 日付 個人ID 出勤時間 退勤時間 工数 残業 日給 20110630 01 8:00 18:00 1 1 7200 20110701 01 8:00 17:00 1 0 8000 データ修正後 日付 個人ID 出勤時間 退勤時間 工数 残業 日給 20110630 01 8:00 17:00 1 0 8000 データ修正後に表示してほしいのは 日付 個人ID 出勤時間 退勤時間 工数 残業 日給 20110630 01 8:00 17:00 1 0 6400 つまり、 社員単価入力テーブルの日付<日報フォームの日付なら、最新の日付のデータで計算してほしいです。そうではない場合、最新日付より前のデータで計算するというコードが書きたいですが、どういう風にに書けばいいか全く、わかりません 教えて下さい。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- タイムスタンプを挿入して、時間の経過に合わせて色
Q列に同じ行のA列に文字が入ると、タイムスタンプを挿入して、時間の経過と共に、720時間かけて白から赤にグラデーション変化する。 上記のVBAを行いたいのですが、オーバーフローエラーが発生します。どの様に修正すれば良いでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Dim currentDate As Date Dim startTime As Date Dim endTime As Date If Target.Column <> 1 Or Target.Cells.Count > 1 Then Exit Sub If Target.Offset(0, 15).Value = "" And Target.Value <> "" Then startTime = Now() Target.Offset(0, 15).Value = startTime ElseIf Target.Offset(0, 15).Value <> "" And Target.Value = "" Then endTime = Now() Target.Offset(0, 15).Value = "" End If currentDate = Now() If Target.Offset(0, 15).Value <> "" Then Target.Offset(0, 16).Interior.Color = GradientColor(Target.Offset(0, 15).Value, currentDate, startTime, 720) Else Target.Offset(0, 16).Interior.Color = RGB(255, 255, 255) End If End Sub Function GradientColor(ByVal timeStart As Date, ByVal timeEnd As Date, ByVal startTime As Date, ByVal duration As Integer) As Long Dim secondsElapsed As Long Dim fractionTimeElapsed As Double secondsElapsed = DateDiff("s", startTime, timeEnd) ➡︎ fractionTimeElapsed = secondsElapsed / (duration * 3600) fractionTimeElapsed = IIf(fractionTimeElapsed > 1, 1, fractionTimeElapsed) GradientColor = RGB(255 * (1 - fractionTimeElapsed), 255 * fractionTimeElapsed, 255 * fractionTimeElapsed) End Function
- ベストアンサー
- Visual Basic
- 時間の計算
勤務時間を管理する為に計算式を作りたいのですが、よく分からなかったので質問いたします。 以下の条件に当てはまる様な式でお願いします。 例えば ・A1に出勤時刻、B1に退勤、C1に通常勤務時間、D1にに残業を表示させるとした場合で、昼休みは1時間(12:00~13:00固定)引きます。 ・出勤時刻は8:00とは限らず、10:00や午後~でも当てはまる様にしたいので、昼休みの時刻を固定して引きたいのです。 ・残業時間とは、通常勤務時間が8時間を超えた場合に適用したいと思います。 以上でC1とD1に入る計算式を知りたいので、宜しくお願いします。 (不明な点がありましたら追加で投稿します。)
- ベストアンサー
- オフィス系ソフト
- 残業計算(エクセル)
残業の計算を関数を使って計算したいのですがうまくいきません。 残業開始は17:20~と決まっており、2時間毎に15分の休憩が必要で 時間単位での管理で最小は0.25時間となり、満たない場合は切り上げとなります。 また、22:00以降は深夜勤務となります。 例えば17:20~23:00の場合は、残業5.25時間、深夜勤務1時間となります。 (列としては、開始時間17:20、終了時間、残業、深夜勤務の4列です) また、有給休暇とかも記載するのでIF式は極力少なく(5個位が限度)したい です。どなたかすっきりした形のものを提案してくださるとありがたいです。
- 締切済み
- オフィス系ソフト
お礼
ご回答していただき、ありがとうございます。 >工事番号 日付 名前 開始 終了 勤務時間 残業 >0003 12/8 A 8:00 15:00 6 >0004 12/8 A 15:00 20:00 5 >はどうだすの?(絶対にありえないなら問題ないですが) このような計算は絶対ないです。 回答内容を参考させていただきます。 何とかやってみます。 ありがとうございました。