- ベストアンサー
Accessの数値から時間に変換する時点で困っています。
Accessの数値から時間に変換する時点で困っています。 仕事の作業上にて、フォームの計算式にて5.25という数値が出ています。 それを5.25→05:15という時間の数字に変換したいのですが、方法がわかりません。 書式設定で可能なものなのか、それとも別のボックスに関数を使用した式をいれればできるのか……ぜひとも教えていただけるよう、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私自身はAccess上で日付の演算をすることが殆ど ないのですが・・・(汗) > 5.25→05:15という時間の数字に変換したい テキストボックスの書式などでやってみたところ、どうも 「5.25→5:25」とされてしまうです。 ですので、KIG_4さんご自身が考えたとおり、 > 別のボックスに関数を使用した式をいれ て、対応するしかないと思います。 (同じ数値を、書式設定だけで「5:15」と「5:25」という 異なる意味の数値に切り替えられるとは考えにくいので) 但し、関数による計算結果を表示する場合、 そのテキストボックスは編集不可(=表示専用)となって しまいますので、ご注意下さい。 新規テキストボックスに設定する式としては、 =Format(CDate([元のテキストボックス]/24), "hh:nn") になります。 【式の説明】 日付/時刻関連の関数は「整数の1」=「1日」の扱いと なります。 そのため、まず「5.25」を24で割って「1日(=24時間)の 何分の1に当たるのか」を算出します。 次に、CDate関数を使用して、Accessに、この演算結果 の小数を日付/時刻として認識させます。 最後に、Format関数で、「05:15」の書式で表示させて います。 (「hh」で時間(Hour)を2桁表示、「nn」で分(miNute)も 2桁表示、と指定) ※「分」が「m」ではないのは、通常、月(Month)の方に 割り当てるためです。 但し、今回の場合は「"hh:mm"」と指定しても、一応 正しく「分」として表示されます。 (「時」と「月」のみを組み合わせて扱うことは通常はない ので、その場合は「m」を分として扱うロジックが上記 関数の内部に組み込まれているものと思います)
その他の回答 (2)
- layy
- ベストアンサー率23% (292/1222)
設計思想としては邪道かもしれませんが、難しく考えないで 数値 0・・・25・・・50・・・75・・・100 に対応する分算出テーブル 0・・・15・・・30・・・45・・・60 を作りリンクさせるのが簡単で早いです。 これで確実に不具合なく機能するものをまず作って、 書式なり関数なりでかっこよく?整えるのが良いと思います。
お礼
どうもlavvさん。 回答ありがとうございます! 一応、下記のやり方で対応することにしました。 スマートではないのですけどね(汗) ご協力、ありがとうございます!
- ShowMeHow
- ベストアンサー率28% (1424/5027)
文字列に、変換するためには、 Function ConvtDecToHM(strDec) As String ConvtDecToHM=Format(TimeSerial(Int(strDec), Int((strDec - Int(strDec)) * 60), 0), "HH:MM") end function のような関数を作るのが手軽です。
お礼
ShowMeHowさん。 回答ありがとうございました! 関数の作成、までは知識が不足しており、理解できませんでした(涙 しかし、文中にありました式を参考になんとか対応することができました。 ご協力、ありがとうございます。
お礼
DexMachinaさん。 回答、ありがとうございます! すごく、参考になりました。 パスワードが不明になり、お礼が遅れ申し訳ありませんでした。 皆さんの回答を参考に、めっちゃスマートではないのですが完成することができました。 「5.25」をIntの切捨てを使い「5」を算出。 そこから元の数字の「5.25」-「5」で「0.25」を算出。 「0.25」×60分=15 「5」と「15」を時間に直し、足し算にて「5:15」という形式にできました。 皆さんの回答、本当にありがとうございました!!