目次
一度はハマる24時間を超えた時間の計算
こんにちは。伊川(@naonaoke)です。
今回は、ご視聴者様から、質問がきましたので、回答したいと思います。
質問内容は、時間の計算です。
単純に質問に答えるなら、ブログではなくコメント欄で回答します。
しかし、時間の計算という事から、24時間を超える計算についても説明をしたいと思います。
ACCESSで挫折をする原因の1つが、時間の計算です。
このブログはこんな人にお勧め
- ACCESSで時間の計算をしたい人
- ACCESS勤怠管理をしたい人
- 24時間を超える計算をACCESSで行いたい人
このブログを、読み終わるころには・・・・
しかし、ACCESSは時間の計算は、あまり得意ではありません。
ACCESSとExcelの連携は、重要だという事が理解できると思います。
ACCESSで一度はハマる時間の計算
24時間を超える計算は、ACCESSを利用した人なら、一度は経験するはずです。
なぜ、Excelのように、24時間を超える計算ができないのか?と。
Excelは、書式設定を変更するだけで、カンタンに24時間を超える計算ができます。
この時点で、時間の計算については、Excelの方がかなり優秀です。
では、ACCESSで、時間を管理するデータベースはできないのでしょうか?
その疑問を私なりに解決してきたので紹介をします。
時間の計算 作業手順 その1 データベース確認
このような勤務時間を管理しているデータベースがあるとします。
上の図では、10行ですが、通常はもっとあります。
この時に、時間_1から時間_2を引いた時間を求めたいというのが質問の内容でした。
これが計算式です。
書式設定を忘れないようにしましょう。
これで完成です。
時間の計算 作業手順 その2 クエリで計算した時間をどのように管理するのか?
完全に私事ですが、以前、会社で利用したシステムで疑問に思ったことがありました。
時間は、全て、秒で表示されます。
10時間20分のような表示ではありませんでした。
なぜなのか理解できませんでした。
ACCESSで24時間を超える表示はできるのか?
結論から言うとできます。
しかし、日付/時刻型としては、扱われません。文字として扱われます。
そうなると、文字として扱われると、計算が出来ません。
ここがネックになります。
だから、私はこの方法は使いません。
結局、ACCESSは、時間を単純に秒で保管して、あとは、利用者が勝手に時間に直してくださいというスタンスです。
しかも、結構面倒なのです。
面倒なうえに、汎用性がない知識を覚える気がしませんでした。
時間の計算 作業手順 その3 hh:mm:ss形式を一旦、数値型の秒に変換する
この計算は、小学生のころにやったと思います。
このように一旦、秒に変換して保存しましょう。
後は、クエリがなんとかしてくれると思いたいのですが、時間だけはそうはいかないのです。
時間の計算 作業手順 その4 ACCESSとExcelを連携させる
ACCESSとExcelを連携させると、ACCESSの時間の計算はすべて解決します。
Excelのセルは、どのような値も、変幻自在にかえてしまいます。
これが、直感的に操作できるExcelのいいところです。
連携するコードはカンタンです。
前回のサブクエリをExcelへ転送するコードを、そのままパクリました。
特に難しいことはないです。
時間の計算 作業手順 その5 番外編
秒をhh:mm:ssに変換するときは、TimeSerial関数を使います。
この関数は素晴らしい関数なのですが、秒が、32,000を超えるとエラーになります。
TimeSerial の引数の型が Integer なので、最大 32767 までしか受け付けないのです。
このエラーの特定にも結構時間がかかりました。
このエラーの特定ができた時に、時間の計算は、Excelに一任すべきと思ったのです。
ここがポイント
時間の計算に関しては、紆余曲折がありました。結果的に、ExcelとACCESSの連携を主軸にするのが最善の方法だと思いました。
今のところ、この方法で、私自身の業務には、なんの支障もありません。
この方法が絶対的に良いというわけではありませんが、参考にしていただけたら幸いです。
まとめ
このサイトでも、同じような内容を何度か紹介しています。
時間の計算は、正直、Excelだけでは、やりきれなくなる可能性があります。
そんな時は、ACCESSを保管庫(データベース)として利用すると、一層便利になるかもしれません。
最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No182です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。