- ベストアンサー
時間表示
まいどおせわになります。 セルに時間を簡単入力したいのですが、 例 入力 1.25 ⇒ 表示 1:15 入力 2.75 ⇒ 表示 2:45 このように簡単入力し、時間表示はできないものでしょうか? ※表示は15分刻みのみです。 入力したセルに表示したいので、セルの書式設定でできれば素晴らしいのですが。 (A1に入力⇒B1に表示は × です) どうぞ宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
NO3です。 >戻るボタンが使えなくなってしまいます。 ⇒VBAを使用するとundo(入力操作に限る)は使用できません。 回答しましたVBAは全てのセルが対象になっていますので入力範囲を限定すればこれ以外のセル入力時にはundoが有効になります。 然しながら最後にVBA入力範囲に入力するとそれまでのundoリストがリセットされるので有効ではありません事、ご注意ください。 一例です。(A列範囲のみ有効) Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub Application.EnableEvents = False Target.Value = Target.Value / 24 Target.NumberFormatLocal = "[h]:mm;@" Application.EnableEvents = True End Sub
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使わない限り入力したセルでのそのような加工はできません。たとえ別のセルに表示させるにしてもなかなか面倒です。 仮にA1セルに1.20と入力して15分刻みでB1セルに表示させるとしたら次のような式をB1セルに入力します。 15分刻みで切り上げる場合には =CEILING((INT(A1)&":"&MOD(A1,1)*60)*1,"0:15") 15分刻みで切り捨てる場合には =FLOOR((INT(A1)&":"&MOD(A1,1)*60)*1,"0:15") 最後にB1セルの表示形式は時刻にします。 A列にお示しのようなデータを入力してB列でその処理結果を表示させることにしてはどうでしょう。
- mu2011
- ベストアンサー率38% (1910/4994)
VBAでないとできないと思います。 一例です。 シートタブ上で右クリック→コード表示→以下のコードを貼り付けてお試しください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target.Value = Target.Value / 24 Target.NumberFormatLocal = "[h]:mm;@" Application.EnableEvents = True End Sub
お礼
mu2011様 VBAとは、高度ですね。 成功です!が、戻るボタンが使えなくなってしまいます。 なにか方法はありますか?
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
> 入力 1.25 ⇒ 表示 1:15 「入力 1..15 ⇒ データ 1:15」だったらオートコレクトで簡単に 出来るんですけどね。ちょっと違いますよね。
お礼
grumpy_the_dwarf様 私のような素人には、この方法が無難そうですね。 最終手段にしたいと思います。 ありがとうございます。
- aokii
- ベストアンサー率23% (5210/22062)
A1に入力⇒B1に表示は × でしたら、おそらくできないでしょう。 データの入力書式を15分刻みのリストにしてはいかがでしょうか。
お礼
aokii様 そうですよねぇ。 簡単に処理したほうがよいですよねぇ。 しかし、可能性があるならば探したいのです。 ありがとうございます。
お礼
KURUMITO様 どうもありがとうございます。 まったく贅沢な方法を望んでいるのは承知しているのですが、、、。 関数も素人ですので、これからもお願いします。