牛、豚、鶏、どれか一つ食べられなくなるとしたら?

始業と終業の時間を入力し勤務時間を計算しております。
始業時間はA1に8:30 終業時間はB1に17:00と入れております。
コロン(:)を省略できるととても楽になります。8:30は830と入力、17:00は1700と入力して
表示にはコロンが入り、セルの書式としては時刻と認識し時間計算が出来ればありがたいです。
よろしくお願い致します。

A 回答 (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)
とする方法なら実用的。


「オートコレクト」を使って、コロンの代わりにピリオド二連打したらコロンと見なすとしたほうが簡単。
    • good
    • 8
この回答へのお礼

mymame00 様
回答ありがとうございました。
オートコレクトは知りませんでした。とても簡単で助かります。

お礼日時:2014/09/15 23:15

こんにちは!



>時刻と認識し時間計算が出来ればありがたいです。
というコトですので、
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
    • good
    • 10
この回答へのお礼

tom04 様
何時も回答ありがとうございます。
今回は、回答者No,1番さんのオートコレクトが自分には簡単でした。

お礼日時:2014/09/15 23:24

基本的に3桁または4桁で入力した数字を入力時に直接時刻として認識できる方法はありません。



表示だけ時刻形式にするなら、セルの書式設定で表示形式をユーザー定義にして「0!:00」とすれば見かけ上時刻のような形で入力することができます。

この場合は時刻として計算するには直接加減乗除するのではなく以下のような数式で加減乗除してください(加減乗除する場合は最後の「*1」は必要ありません)。

=TEXT(B2,"0!:00")*1

3~4桁で入力した数字を、まとめて時間のシリアル値に変換したいなら、Officeクリップボードを表示しておき、上記の設定で見かけ上時間表示の対象範囲をコピーし、そのままクリップボードのデータをクリックして上書き貼り付けし、セルの書式設定で時刻を選択してください。
    • good
    • 1
この回答へのお礼

MackyNo1 様
回答ありがとうございました。
回答者No1番さんのオートコレクトを知りませんでした。
今回はこれを使ってみます。

 

お礼日時:2014/09/15 23:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報