• 締切済み

Accessで、24時間以上の日付/時刻型の計算

Accessで、24時間以上の、47時間59分までの日付/時刻型の計算方法はありませんか? 例:シフト勤務 17:0:000~33:00:00 休憩01:00:00 の勤務時間を計算するために33:00-17:00-01:00:00= ・・勤務時間という計算をしたいのですが、まず33:00:00値を日付/時刻型で持つことができないので、テキスト型で持たせると Accessで計算が出来ません。 よい方法はありますか? つたない質問で申し訳ありませんがよろしくお願いします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

プログラムの世界において、日付型は必ず年月日時分秒すべてを持っています。 これは日付型の実体が実数と同じで、整数部が年月日、小数部が時分秒を 表すからです。表示上省略される場合はあっても、メモリ上には持ってます。 Format すれば表示できると思います。 但し、0 が 0/1/1を表したり、1900/1/1を表したり、1899/12/30だったり 扱うデータベースの種類やシステムのバージョンによって変わるので確認が 必要です。(AccessVBA と Accessの日付/時刻型でも違ってた気がします) 年月日時分秒をそのまま日付/時刻型に持てば良いのでは? [AccessVBAの例] Dim datStart As Date Dim datEnd As Date datStart = TimeSerial(12, 9, 1) Debug.Print Format$(datStart, "yyyy/mm/dd hh:mm:ss") datStart = DateSerial(2011, 8, 2) + TimeSerial(12, 9, 1) Debug.Print Format$(datStart, "yyyy/mm/dd hh:mm:ss") datEnd = DateSerial(2011, 8, 4) + TimeSerial(3, 9, 1) Debug.Print DateDiff("h", datStart, datEnd) & "時間" 'もしくは0の日付を基準に datStart = TimeSerial(8, 0, 0) Debug.Print Format$(datStart, "yyyy/mm/dd hh:mm:ss") datEnd = TimeSerial(37, 10, 0) Debug.Print Format$(datEnd, "yyyy/mm/dd hh:mm:ss") Debug.Print DateDiff("h", datStart, datEnd) & "時間"

asa2tonya
質問者

お礼

回答ありがとうございます。 日付を持たせるのは良いですね。 難しそうですが・・。

  • root_16
  • ベストアンサー率32% (674/2096)
回答No.1

実際にやってないので適当ですが、 開始時間と終了時間、どちらも24時間単位で入力し、 終了時間が開始時間より小さい(早い)場合、 で計算式を変えればいいんじゃないですかね? 通常:終了時間-開始時間-1h 終了時間が開始時間より小さい(早い)場合: 24:00-開始時間+終了時間-1h ただ、以前エクセルで勤怠関連のものを 作りましたが、 まともな会社であれば、 昼の休憩時間があるなら、残業で深夜に及ぶ場合の 夜間の休憩時間も規定していると思います (お昼休憩から全く休憩させずに朝まで仕事は駄目)ので 条件式は複雑になり 計算はそう簡単ではないと思います。 あと、早退とか終了時間によって 休憩時間を引く、引かない、が出てきますし。

asa2tonya
質問者

お礼

回答ありがとうございます。 すみません。今回の場合47:59:00まですでに値が出力されるファイルがあるので 24時間単位に直すほうが大変かもしれません。。

関連するQ&A

  • Access テキスト型を日付/時刻型へ変更

    いつもお世話になっております。 Accessについてお願い致します。 テーブル「メインデータ」に日付と時刻が一緒になっているデータがあります。例:2004/01/01/ 10:00 現在、 フィールド名:受付時間 データ型:テキスト型 フィールドサイズ:12 定数入力:0000/00/00\ 00:00;0;_ と設定してあり、問題はこのデータをテキスト型から日付/時刻型「「yyyy/mm/dd @@:@@」)へ変更したいのですが、 テキスト型→日付/時刻型へ変更すればデータが消えてしまいます。 そこで、クエリでFormatを使ったのですがエラーが出てしまいます。 何か良い案はございませんでしょうか? 宜しくお願い致します。

  • 時間の合計計算ができません。

    給料計算の表なんですが、  A1  B1      C1     D1     E1      F1 日付 始業時刻 終業時刻 勤務時間 休憩時間 実働時間 と項目をつくりました。 終業時刻ー始業時刻=勤務時間とし、休憩時間は1時間と決まっているので、日付を入れた時点で自動入力されるように=IF(A1<>"","1:00","")といれました。すべてうまくいったと思ったんですが、E1のタテの合計が空白になってしまいます。 どう解消したらいいでしょうか? いい方法をご教授ください。お願いします。

  • エクセルで時間計算をしたい

    エクセルで勤務時間の計算をしたいと思います。 過去の質問を見ましたが、理解できませんでした。 8:30~19:00まで勤務 休憩1時間 の場合、19:00-8:30-1:00の計算だと思うのですが、 表示を9.5hにしたいのです。 計算が間違っている場合、もしくは、もっと簡単に出来る方法があれば、お教え下さい。 30分=0.5の方法も教えてください。 また、夜勤勤務もあるため、 19:00~2:00まで勤務 休憩1時間 という場合、どういう計算式をいれたらいいか、教えてください。 以上、よろしくお願い致します。

  • VB2008で日付と時間の計算

    教えて下さい。 VBで日付と時間の足し算をしたいのですがやり方がわかりません。 フォームに6つのテキストボックスを配置し、6つのテキストボックスには それぞれ日・時・分の数値を入力します。 例えばヤフーオークションの終了時刻を計算したい場合、 TextBox1~3に現在の日時を入力し、TextBox4~6に残り時間を入力します。 現在時刻 [4] 日 [17] 時 [44] 分 残り時間 [3] 日 [6] 時間 [30] 分 この数値の足し算結果をメッセージボックスに終了時刻として表示させるようにしたいのですが、やり方が分からず困ってます。 教えていただけないでしょうか。

  • access2000にてクエリで日付計算

    アクセスのテーブルにて 開始時間 00:00 と終了時間 99:99 を持っています クエリで 終了時間-開始時間を計算し 実働時間 00:00 を出したいのですが 普通に計算すると0.023088・・・とかの数字になります 実働時間を計算する方法はありますでしょうか? 開始時間 終了時間ともデータ型は 日付/時刻型になってます

  • Excel:勤務時間の計算がうまくいかない。

    No.1468024の質問をした者です。 勤務表を作成しています。(Excel2002を使用) 終了時刻(D列)ー開始時刻(C列)ー休憩時間(E列)=当日の勤務時間を計算しています。 No.1468024の質問でアドバイスをいただき、以下のような計算式を記述しました。 <例> =AND(C13*D13)*(MIN(IF(AND(D13>="12:00"*1,D13<="13:00"*1),"13:00",D13),"17:40")-MAX(IF(AND(C13>="12:00"*1,C13<="13:00"*1),"12:00",C13),"09:00")-E13+FLOOR(MAX(D13,"18:00")-"17:59:59","0:15")) ほぼうまくいくのですが、開始時刻9:00終了時刻12:00とした場合、勤務時間4:00となり、間違ってしまいます。(正しくは勤務時間3:00。また開始時刻9:00終了時刻が12時から13時までの間の時刻で入力された場合も勤務時間3:00と出力したいです。) 休憩時間セルに以下のような計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(D13-"12:00"*1<=0,0,IF(C13-"12:00"*1>=0,0,IF(D13<"18:00"*1,"1:00","1:20")))) 休憩時間は12時から13時までの1時間。 終了時刻が17:40以降なら20分休憩時間が加算されます。 開始、終了が入力されていないと0:00表示。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお願いします。

  • アクセスの時間計算について

    マイクロソフトアクセスについての質問です。現在アクセスで勤務時間表を作成しています。テーブルを作成し、勤務時間を入力します。この時、入力するフィールドの種類は、テキスト型で入力しています。1日から31日までレコードを入力し、入力し終わったところでレポートを作成しました。レポートは勤務時間を並べて最後に合計時間を出すというものなのですが、ページフッタのところに、テキストボックスを設置し、その中に「sum=[残業時間]」と入力しましたが、指定した式の構文が正しくありませんと表示されます。 おそらく勤務時間を入力しているフィールドがテキスト型のためエラーが出ているものと思われますが、勤務時間を入力フィールドを数値型にすると0:00分という表示ができなくなってしまいます。 やりたい作業としては、1:00+1:00=2:00というような計算をアクセスでする場合にはどのようにしたらいいのでしょうか。

  • VBAで日付と時刻の計算に困っています

    すでに入力されている日本の日付と時刻を、欧州の日付と時刻に変換する というようなマクロを組みたいです。 もう少し具体的にいうと、 日本の日付と時刻が 2011/06/12 07:15:20 というような形式で入力されているセルA1があり、 そのセルA1を選択している状態でマクロを実行すると、 セルに入力されている日付と時刻を欧州の日付と時刻に変更する というマクロです。 セルA1の日付を例にすると、マクロを実行したら時差である9時間を減算して、 2011/06/11 22:15:20 という値が返ってくるようにしたいです。 DateAdd関数を使用して時刻を-9時間することはできたのですが、 時刻のみが-9時間されるだけで日付は変更できませんでした。 もしよろしければ、時間を減算しただけで日付も減算してくれるような マクロの組み方を教えていただけないでしょうか。

  • 2つの時刻間の時間を計算したい。

    よろしくお願いします。 エクセル2010、OSはWindows7です。 例) セルA1 に時刻その1 セルB1 に時刻その2 というデータが入力されています。 時刻は、YYYY/MM/DD hh:mm の形式で入力されており、2つの時刻の差は24時間以上なので日付は異なります。 この2つのセルの時間差をhh:mmの形式で表したいですが、単純に引き算しただけでは思うようにいかないようです。 やり方を教えてください。

  • EXCELでの時間計算(休憩時間の差引)について

    パートさんの遅刻・早退・外出時間を自動計算する表を作っていますがうまく作れません・・・ 下記の場合どうしたらよいでしょうか? 例えば遅刻の合計時間を算出するのに開始時刻から終了時刻を引き算しますが 10:20~10:30、 12:00~12:40、 14:50~15:00、は休憩時間なので自動的 に差し引きたいと考えています。 遅刻の時間内に、休憩時間である10:20~10:30が含まれれば10、 12:00~12:40が含まれれば40、14:50~15:00が含まれれば10を引くという感じです。 どのような計算式にすればよいのでしょうか? ちなみに勤務時間は8:30~17:00です。 例えば、 (例)セル【B2】8:30(開始)セル【B3】13:00(終了)の場合、セル【B4】には50分を差引いた 3:40の合計時間を算出したいです。 色々調べて、B4に以下の式を入力してみましたが、どうもうまくいきません。 =IF(B3<>"",B3-B2-IF(TEXT(B3,"hh:mm")>"15:00","1:00",IF(TEXT(B3,"hh:mm")>"12:40","0:40",IF(TEXT(B3,"hh:mm")>"10:30","0:10","0:00")))) どうぞ宜しくお願いいたします。

専門家に質問してみよう