Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
時刻データの取り込みと24時間以上の表記計算について
投稿日時: 23/06/12 14:25:11
投稿者: 暁虎

質問させて頂きます よろしくお願いいたします。
 
勤怠システムからアウトプットしたCSVデータが、170:30 や、213:30 で生成されまして、Excelで開いた場合、データとしては 「1900/1/6 18:45:00」、「1900/1/8 21:30:00」 となります。
Accessに取込み、部門別平均等の集計を行いたいのですが、Accessのテーブルでは24時間を超える時間に対しては、「1900/1/6 18:45:00」などの値に変わってしまいます。
TimeSerial関数やExcelでの秒変換等やってみましたが、上手くいきませんでした。
何か良い方法をご存じの方アドバイスの程よろしくお願いいたします。

回答
投稿日時: 23/06/12 15:04:55
投稿者: hatena
投稿者のウェブサイトに移動

Accessには日付/時刻型というデータ型はありますが、時間型というデータ型はありません。
日付/時刻と時間はまったく別の概念です。
エクセルはこのへんがわりと寛容で、状況にあわせて解釈しますが、Accessではそれはできません。
 
とりあえず仮のテーブルにテキスト型で取り込んで、VBAかクエリで適切に変換して本来のテーブルに追加するということになります。
 
170:30は170時間30分ということだと思いますので、分単位の数値(長整数型)に変換するのがいいでしょう。
勤務時間だとおもいますので、集計する必要があると思いますが、テキスト型だと集計できませんので。
 
フィールド名がF1として、下記の式で分単位に変換できます。
Val([F1])*60+Right([F1],2)
これをクエリの演算フィールドに設定して、これを追加クエリにして本テーブルに追加すればいいでしょう。
 
170:30 なら 10230 という数値なります。
 
フォームやレポートで表示させるときは、下記のような式で 170:30 という書式に変換します。
 
=[勤務時間] \ 60 & ":" & [勤務時間] Mod 60

回答
投稿日時: 23/06/12 15:14:38
投稿者: sk

引用:
勤怠システムからアウトプットしたCSVデータが、170:30 や、
213:30 で生成されまして、Excelで開いた場合、
データとしては 「1900/1/6 18:45:00」、「1900/1/8 21:30:00」 となります。

セルに格納されている時刻データを[h]:mm形式で表示する組み込み機能は
Access にはありません。
(それが出来る Excel の方が特殊と言える)
 
もしその CSV ファイルを Access のテーブルとしてインポートしようとしても、
「 24 時以降の時刻を表す文字列」を日付/時刻型のデータに直接変換することは
できません。
(どうしても取り込みたいなら「とりあえずテキスト型のデータとして取り込む」しかない)
 
引用:
Accessに取込み、部門別平均等の集計を行いたい

その列の属性が「時刻」ではなく「時間量」であるならば、Excel の Power Query を
使用して集計された方がよろしいのではないかと。
 
「どうしても Access で集計したい」ということなのであれば、
まずその文字列を分単位の整数値に変換する処理が必要となります。

投稿日時: 23/06/14 13:09:49
投稿者: 暁虎

アドバイス下さった皆様、有難うございました。
何とかクエリにて集計できそうです。 
閉じさせて頂きます