- ベストアンサー
エクセルで時間入力10:30の:コロン省略したい。
始業と終業の時間を入力し勤務時間を計算しております。 始業時間はA1に8:30 終業時間はB1に17:00と入れております。 コロン(:)を省略できるととても楽になります。8:30は830と入力、17:00は1700と入力して 表示にはコロンが入り、セルの書式としては時刻と認識し時間計算が出来ればありがたいです。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
それが実現されると数値の3桁も4桁も全部コロンがついて入力されることになるのでものすごく不便。 セルの書式設定で特定のセル範囲にのみそれを適用するという方法もあるが、それだと入力した物は時間として見なされず計算に使えない。 Private Sub Worksheet_Change(ByVal Target As Range) を使って If Len(Target.Value) < 4 Then t = "0" & Target.Value Target.NumberFormatLocal = "h:mm;@" Target..Formula = Left(t, 2) & ":" & Right(t, 2) とする方法なら実用的。 「オートコレクト」を使って、コロンの代わりにピリオド二連打したらコロンと見なすとしたほうが簡単。
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! >時刻と認識し時間計算が出来ればありがたいです。 というコトですので、 VBAになってしまいますが、一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りA・B列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A:B")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target If .Value <> "" Then If IsNumeric(.Value) Then If .Value < 2400 And .Value Mod 100 < 60 Then Application.EnableEvents = False .Value = TimeSerial(Int(.Value / 100), .Value Mod 100, 0) .NumberFormatLocal = "h:mm" Application.EnableEvents = True Else MsgBox "入力値が不正です" .Select .ClearContents End If End If End If End With End Sub 'この行まで ※ とりあえず24時までとしています。m(_ _)m
お礼
tom04 様 何時も回答ありがとうございます。 今回は、回答者No,1番さんのオートコレクトが自分には簡単でした。
- MackyNo1
- ベストアンサー率53% (1521/2850)
基本的に3桁または4桁で入力した数字を入力時に直接時刻として認識できる方法はありません。 表示だけ時刻形式にするなら、セルの書式設定で表示形式をユーザー定義にして「0!:00」とすれば見かけ上時刻のような形で入力することができます。 この場合は時刻として計算するには直接加減乗除するのではなく以下のような数式で加減乗除してください(加減乗除する場合は最後の「*1」は必要ありません)。 =TEXT(B2,"0!:00")*1 3~4桁で入力した数字を、まとめて時間のシリアル値に変換したいなら、Officeクリップボードを表示しておき、上記の設定で見かけ上時間表示の対象範囲をコピーし、そのままクリップボードのデータをクリックして上書き貼り付けし、セルの書式設定で時刻を選択してください。
お礼
MackyNo1 様 回答ありがとうございました。 回答者No1番さんのオートコレクトを知りませんでした。 今回はこれを使ってみます。
お礼
mymame00 様 回答ありがとうございました。 オートコレクトは知りませんでした。とても簡単で助かります。