
マイクロソフトのエクセル EXCEL(2010)において時刻入力を簡単にしたいのですが、下記のようなことをする方法はありますか?
ex.
タイムカードの集計をするのですが、
セルに「13時25分」を入力したく、表示は「13:25」としたい、日付情報は含まなくてOKの場合、
(カギカッコは分かりやすく見えるかなと思った表記であり不要)
私はキーボードのテンキーで1と3を押した後、ひらがなでいうと「け」のところにあるコロン(:)を押して、テンキーで2と5をおします。
が、このコロンをタイピングするのがめんどくさく、普段はかな入力なので「13け25」になってしまったりするので、
できれば予めセルに設定をするなどしておいてテンキーで1と3と2と5だけを押すと13:25になるとベストです。(1つのセルで完結したいので、こっちのセルに入れておくとこっちのセルがっていうのは好みではありません・・・)
8:05だとしたら「0805」、16:35だとしたら「1635」と入力するだけの方法はありませんか?
No.4ベストアンサー
- 回答日時:
こんにちは!
>タイムカードの集計をするのですが
というコトですので、そのまま計算できるように実データにしてみてはどうでしょうか?
VBAになりますが一例です。
入力範囲がこちらでは判断できませんので、A列限定にしています。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)A列セルにデータを入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
'▼A列以外、複数セルの場合は何もしない。
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
If .Value > 0 And .Value < 2400 Then
If .Value Mod 100 < 60 Then
.NumberFormatLocal = "h:mm"
Application.EnableEvents = False
.Value = TimeSerial(Int(.Value / 100), .Value Mod 100, 0)
Application.EnableEvents = True
Else
MsgBox "下二桁は60未満にしてください。"
.Select
End If
Else
MsgBox "入力値が不正です。"
.Select
End If
End If
End With
End Sub 'この行まで//
※ 本来であれば細かいエラー処理が必要なのでしょうが、
とりあえずはこの程度で・・・m(_ _)m
ご回答ありがとうございました。
希望に一番近い感じで、ご教示頂いた内容を基にいじってみたいと思います。
VBAは齧ろうとしたくらいで挫折しましたがこれから勉強してみようと思いました。
ありがとうございました。
No.7
- 回答日時:
解決されてましたらスルーしてください
A2:B32 の範囲でのものになりますが、以下のような感じではどうでしょう
805
234
45
567
1278
2367
↓
8:05
2:34
0:45
6:07
13:18
24:07
となるかと
なお、まとめてはりつけても動くようにしてみました
また、変換後のものを移動/貼り付けしても、誤動作はしないかと
不具合あったら、修正するなり捨てるなりしてください
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, r As Range
Dim vA As Variant, v As Variant
Dim iT() As Long
Dim i As Long, j As Long
Set rng = Intersect(Target, Range("A2:B32"))
If (rng Is Nothing) Then Exit Sub
vA = Array(Array(60, 1), Array(24, 0))
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each r In rng
If (r.Value <> "") Then
i = Val(r.Value)
If (i = r.Value) Then
ReDim iT(2)
For Each v In vA
j = i Mod 100
i = i \ 100
i = i + (j \ v(0))
iT(v(1)) = j Mod v(0)
Next
r = i + TimeSerial(iT(0), iT(1), iT(2))
End If
End If
Next
rng.NumberFormatLocal = "[h]:mm"
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
No.6
- 回答日時:
こんにちは。
本日は、もう私が書こうと思っていたものは、あらかた出てしまったので、マクロだけ提示しておきます。
せっかく、#4さんが書いていただいているのに、後付けで申し訳ないのですが、わたし流の方法です。こんなパターンのマクロは、もう10年前に書いていたような気がします。
私の考え方は、VBAの時間値というものは、24時間以内に対して、
ワークシート上は、時間自体の制限はないというところを、着眼点においたものなのです。
マクロを作っている人だけが、その違いを分かるかもしれません。まずは参考まで。
1290 と入れたら、どうなるか、とか、2645 はどう表示されるか。
シートタブを右クリック-コードの表示
現れた画面に以下を貼り付けます。
それから、書式が先で、値が後なのですね。あまりはっきりした記憶ではないのですが、値を先に入れると、その値が変わってしまうことがあるという現象からなのです。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myTime As Variant
Dim myH As Variant
Dim myValue As Variant
If Intersect(Target, Range("A1:A30")) Is Nothing Then Exit Sub '入力する範囲
If Target.Count > 1 Then Exit Sub '複数のセルの同時処理は行わない
If Target.Value = "" Then Exit Sub '空白は除外
If Not IsNumeric(Target) Then Exit Sub '文字は除外
myValue = Target.Value2
If Len(myValue) > 4 Then myValue = Left(myValue, 4)
myTime = Format(myValue, "00:00")
myH = Mid(myTime, 1, 2)
If myH >= 24 Then
myTime = (myH \ 24) + (myH Mod 24) / 24 + Mid(myTime, 4, 2) / (24 * 60#)
End If
Application.EnableEvents = False
If IsDate(myTime) Then
Target.Value = myTime
Else
Target.NumberFormat = "[h]:mm"
Target.Value = myTime
End If
Application.EnableEvents = True
End Sub
'///
ご回答ありがとうございました。
VBAはまだまだ勉強不足ですが、着眼点からいろいろなやり方があるものだなと勉強になりました。
改めて挑戦してみたいと思います。
No.5
- 回答日時:
>8:05だとしたら「0805」、16:35だとしたら「1635」と入力するだけの方法はありませんか?
少し手間が掛かるが
入力したいセル(または列、行)の書式を「文字列」にしておき、
8:05を8.05、16:35を16.35と入力する。
後に「置換」で入力した範囲のピリオド(小数点のこと)をコロン(:)に置き換える。
これなら時間として計算も可能だ。
ご回答ありがとうございました。
ご教示頂いた方法だと、なんとなく計算ミスが起こりそうなので(個人的な感想です)
今回はVBAに挑戦してみたいと思います。
No.3
- 回答日時:
> 8:05だとしたら「0805」、16:35だとしたら「1635」と入力するだけの方法はありませんか?
時刻を入力するセル範囲に、「セルの書式設定」の「表示形式」で「ユーザー定義」を「#0":"00」に設定すれば、ご希望のように表示されます。
(8:05の場合、「805」「0805」どちらでもOKです。)
但し、時間の計算には使えませんので、お勧めしません
ご回答ありがとうございました。
今回の目的は勤務時間を計算するためなので文字にするやり方では対応できません・・
一旦こっちのセルで入力して・・っていうのも考えましたが、
今回はVBAに挑戦してみたいと思います。
No.2
- 回答日時:
● 入力規則はNo.1の方の通り、日本語入力を無効にします
● コロンは、オートコレクトを使うと便利だと思います。
当方は 「..」を「:」に自動変換するようにしてあります
13..25 と入力します
http://www4.synapse.ne.jp/yone/excel2010/faq/aut …
▲ 計算するでしょうからすすめませんが、表示形式で見かけ上なら
>8:05だとしたら「0805」、16:35だとしたら「1635」と入力するだけの方法はありませんか?
も可能です。表示形式のユーザー定義で #0!:00
計算するときは、=text(A1,"#0!:00")+0
とするなど、一工夫必要なので参考程度に

ご回答ありがとうございました。
オートコレクトのやり方は以前ググった時に試してみましたが、いまいち使い勝手が宜しくなく結局左手でコロンを打っていました。
コロンのついたテンキーが売ってないかも探しましたが発見に至りませんw
今回はVBAに挑戦してみたいと思います。

No.1
- 回答日時:
>テンキーで1と3と2と5だけを押すと13:25になるとベスト
コッチの方が簡単な気がします
例えばA1のセルを選択した状態で
・データ→データの入力規則
・「データの入力規則」というダイアログで「日本語入力」タブを選択。
・「日本語入力」という項目で「無効」を選択
とやっておくと、かな入力で「13け25」が「13:25」となる筈です。
ご回答ありがとうございます。
「け」or「:」のキーを押す事自体が離れていて面倒なので、テンキーの数字キーのみで出来ないかなぁと模索しています。
1、3、2、5、エンターキー、の5つのみで次のセルへというような方法を・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELでリターンキーが押されたらそのセルに特定の文字を表示したいのですが。 2 2022/08/07 12:58
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Excel(エクセル) セルの上書き禁止について 5 2022/04/02 10:09
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じセルに箇条書きをし...
-
A1セルに入力したら、入力時間...
-
エクセルで既に入力してある文...
-
IF関数で0より大きい数値が入力...
-
空白でないセルの値を返す方法...
-
Excelでセルに入力されたカラー...
-
エクセルの数式がかぶって、選...
-
yyyy/mm/ddからyyyy/mmへの変換
-
excel 関数にて文字を0として認...
-
入力したところまでを自動的に...
-
Excel 大小比較演算子による「...
-
エクセルで、数値を月として認...
-
Excelの指数関数近似曲線からの...
-
マクロ無しで時間自動で記入を...
-
【Excel】セル内の時間帯が特定...
-
Excel:文字と数字の組合せ、次...
-
エクセル セルに文字を入力した...
-
【エクセル】指定したセルに入...
-
EXCELのセル上のURLを...
-
参照先セルに値が入っていない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
空白でないセルの値を返す方法...
-
Excelでセルに入力されたカラー...
-
入力したところまでを自動的に...
-
yyyy/mm/ddからyyyy/mmへの変換
-
Excel:文字と数字の組合せ、次...
-
【Excel】セル内の時間帯が特定...
-
参照先セルに値が入っていない...
-
Excel 大小比較演算子による「...
-
エクセルの数式がかぶって、選...
-
excel 関数にて文字を0として認...
-
エクセル セルに文字を入力した...
-
エクセルで、数値を月として認...
-
値を入力後、自動的にアクティ...
-
バーコードが読み取れない原因...
-
エクセルで時間の判定をしてい...
-
Excel で空欄にも単位 \\や円 ...
おすすめ情報