• ベストアンサー

Accessの数値から時間に変換する時点で困っています。

Accessの数値から時間に変換する時点で困っています。 仕事の作業上にて、フォームの計算式にて5.25という数値が出ています。 それを5.25→05:15という時間の数字に変換したいのですが、方法がわかりません。 書式設定で可能なものなのか、それとも別のボックスに関数を使用した式をいれればできるのか……ぜひとも教えていただけるよう、よろしくお願い致します。

  • KIG_4
  • お礼率100% (3/3)

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

私自身は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」を分として扱うロジックが上記   関数の内部に組み込まれているものと思います)

KIG_4
質問者

お礼

DexMachinaさん。 回答、ありがとうございます! すごく、参考になりました。 パスワードが不明になり、お礼が遅れ申し訳ありませんでした。 皆さんの回答を参考に、めっちゃスマートではないのですが完成することができました。 「5.25」をIntの切捨てを使い「5」を算出。 そこから元の数字の「5.25」-「5」で「0.25」を算出。 「0.25」×60分=15 「5」と「15」を時間に直し、足し算にて「5:15」という形式にできました。 皆さんの回答、本当にありがとうございました!!

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

設計思想としては邪道かもしれませんが、難しく考えないで 数値 0・・・25・・・50・・・75・・・100 に対応する分算出テーブル 0・・・15・・・30・・・45・・・60 を作りリンクさせるのが簡単で早いです。 これで確実に不具合なく機能するものをまず作って、 書式なり関数なりでかっこよく?整えるのが良いと思います。

KIG_4
質問者

お礼

どうもlavvさん。 回答ありがとうございます! 一応、下記のやり方で対応することにしました。 スマートではないのですけどね(汗) ご協力、ありがとうございます!

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

文字列に、変換するためには、 Function ConvtDecToHM(strDec) As String ConvtDecToHM=Format(TimeSerial(Int(strDec), Int((strDec - Int(strDec)) * 60), 0), "HH:MM") end function のような関数を作るのが手軽です。

KIG_4
質問者

お礼

ShowMeHowさん。 回答ありがとうございました! 関数の作成、までは知識が不足しており、理解できませんでした(涙 しかし、文中にありました式を参考になんとか対応することができました。 ご協力、ありがとうございます。

関連するQ&A

  • Access97→2000変換後にマクロが作動しない

    Access97で作成したアプリケーションソフトをAccess2000に変換したところ、マクロのところがうまく作動しません。OSはXPです。 それもフォームを開く際に特定のレコードを指定するためのWhere条件式[コントロール名]=[Forms]![フォーム名]![コントロール名]を設定してあるのですが、ここがうまくゆきません。 すなわちAccess97だとこのマクロを実行するとコントロール名で数値を入力するように訊いてくるのですが、access2000変換後はいきなり数値入力されないで(=レコードを特定できないで)フォームが開くだけになってしまいます。 似たような別のマクロで、特定のレポートを開くマクロでは、この同じWhere条件式は、ちゃんと作動します。 なぜAcces97で作動するフォームのWhere条件式が、2000では作動しないのでしょうか? またこのような97→2000変換後の不具合はほかの部分でもおこるのでしょうか? 今のところ、動かした範囲では他の不具合は見あたらないのですが・・・ Accessのバージョンアップについて詳しい方、どなたかよろしくお願い致します。

  • 【Excel2003】文字列で保存されている数値の書式設定を数値に変換

    Excel2003です。 文字列で保存されている数値の書式設定を数値に変換する関数等がありましたらぜひ教えてください。 よろしくお願いします。

  • access フィールドの数値を使って計算したい

    あるテーブル内に様々な数値をフィールドに入力して、それらの数値をフォームでルックアップを使用して計算したいのですが、accessはどうやら主キー(id)の数値(1、2、3…)を使って計算してしまいます。どのように設定すればよいのでしょうか。 テーブル1 id  フィールド1 1    5 2    10 3    15 4    20 フィールド1の数値をフォームにてルックアップで選んで計算したい(クエリ内の計算式に組み込みたい)。 よろしくお願いいたします。 access2010使用

  • ACCESS2000数値型⇒テキスト型変換

    ACCESS2000でクエリーで例えば25.0の数値を"25.0"そのままの形の文字列に変換したいのですが、Formt関数とか使っても"25"になってしまいます。"25.0"と表示させる方法ないでしょうか?お願いします。

  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • テキストボックス内の型変換と数字チェックについて

    ●VB6.0を使用しているのですが、テキストボックスにある数字(string型)を数値型にして40-12など普通の計算を行うにはどのように型変換をすればいいのでしょうか? ●また数字に007や03など0で始まる数字を取り除く関数があれば教えていただけますか?

  • 数値を表示だけ特定の文字列に変換したい。

    Excelにて、セルに数値を入れた際に表示だけ特定の文字列に変換したいです。 例えば 0.5 → ”半分” 1  → ”全部” 0~1までの少数第二位までの数値 → ”ちょっと” という形にしたいです。 ただ、別のセルの計算式で値を使うため、表示だけを変更したいのです。 書式設定でできるのかと思っていましたが、うまくいきませんでした。 どなたか教えて頂けないでしょうか?

  • Accessでテキスト型→数値型への変換方法

    Access2000を使用しており、クエリを作成しています。 テーブルから[回答]というフィールドをひっぱってきています。 フィールド[回答]にて、最初の3文字に対応時間を入れており、 Mid関数にて対応時間を抽出しました。 対応時間:Mid([回答],1,3) しかし、Mid関数でとったフィールドは文字列として認識されています。(Ex:001など) この文字列を数値に変換する関数、又は方法などお教えくださいませ。 よろしくお願い致します。 以下にイメージ図を記載致します。 ================================= 回答            対応時間 001 ●●●~        001 ================================= (対応時間を数値で扱えるようにしたい、ということです)

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

  • Access97で、“分:秒”という形式で入力・保存する方法

    Access97で、あるテーブルに時間のフィールドを作りました。 このテーブルをもとにフォームを作成しました。 ここで、このフォームの、あるテキストボックスのコントロールソースを時間フィールドに設定し、書式を“nn\;ss”に設定し、定型入力で“##:##;0;*”としました。 このフォームのテキストボックスにカーソルをあてると“**:**”となり、4つの数字を入力できるのですが、この4つの数字を分秒では認識せず、時分としてしか認識しないようです。 どうすれば4桁の数字を入力し、“分:秒”という形式で表示・保存できるのでしょうか。 宜しくお願いします。