お世話になります。 あるExcelシートをインポートしたテーブルの作業時間フィールドに00:15、05:45、30:00などの時刻表示(文字列)のデータがあります。これをクエリの抽出条件で、00:15→0.25、05:45→5.75、30:00→30.00という数値に変換したいのですが、下記式では、30:00だけが#エラーとなります。 作業h: IIf([作業時間] Is Null,Nz([作業時間]),CDate([作業時間])*24) 時刻表示を数値に変換する記述をご教授願います。 ちなみに時刻表示が、23:59までの値なら上手く変換できます。24:00以上になるとエラーになります。
確認から。 [作業時間]フィールドのデータ型は、文字列フィールドなのですよね。 で、欲しいのは、数値型なのですよね? 提示された数式では、CDATEを使い 日付時刻型に変えているのでは? そもそも、小数点にて処理したいのに、日付時刻型に変えても面倒なだけです。 作業時間フィールドは「:」を含め 5桁の固定であるなら 左側2桁を整数部 右側2桁を小数部 となる様にすれば良いですよね 更に 小数部は、得られた数値/60 にて 換算 15→0.25、30→0.5、45→0.75 になります。 整数部 は LEFT([作業時間],2) 小数部 は RIGHT([作業時間],2)/60 得られた 整数部 小数部 を加算すれば良いですよね。
Suzu様 回答有難うございます。 >作業時間フィールドは「:」を含め 5桁の固定であるなら データ型は文字列ですが、表示パターンが下記のようになっております。 1:45:00、1:45、17:15:00、17:15 Excelシートは、1:45、17:15の2パターンなんですが、テーブルとしてインポートされると上記の 4パターンになっているようです。 「:」の文字を起点にして左側文字、右側文字として取り出せると良いのですが、記述方法が良く 分かりません。 他に良い記述方法はございますでしょうか?
引用:「:」の文字を起点にして左側文字、右側文字として取り出せると良いのですが、記述方法が良く 分かりません。
Suzu様 お世話になっております。 早速のアドバイス有難うございました。 貴殿のコメントをヒントに下記記述で上手くいきそうです。 作業h: IIf([作業時間] Is Null,0,Left([作業時間],InStr([作業時間],":")-1)+Mid([作業時間],InStr([作業時間],":")+1,2)/60) 大変助かりました。 どうもありがとうございました。
利用者の皆様にお知らせです。
マイクロソフト オフィス スペシャリスト(MOS)
ビジネス統計スペシャリスト
IC3(アイシースリー)
VBAエキスパート
アドビ認定アソシエイト(ACA)
マイクロソフト テクノロジー アソシエイト(MTA)