マイクロソフトのエクセル 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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じセルに箇条書きをし...
-
A1セルに入力したら、入力時間...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
参照先セルに値が入っていない...
-
Excel:文字と数字の組合せ、次...
-
Excelでセルに入力されたカラー...
-
空白でないセルの値を返す方法...
-
値を入力後、自動的にアクティ...
-
入力したところまでを自動的に...
-
excel 関数にて文字を0として認...
-
エクセルの数式がかぶって、選...
-
エクセル:コメントのようなも...
-
Excel マクロ モジュラス43 vba
-
バーコードが読み取れない原因...
-
ふりがな表示
-
yyyy/mm/ddからyyyy/mmへの変換
-
【Excel】セル内の時間帯が特定...
-
エクセル セルに━ (横棒)を入...
-
CSV出力で変換されてしまっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じセルに箇条書きをし...
-
A1セルに入力したら、入力時間...
-
参照先セルに値が入っていない...
-
エクセルで既に入力してある文...
-
IF関数で0より大きい数値が入力...
-
Excelでセルに入力されたカラー...
-
空白でないセルの値を返す方法...
-
Excel:文字と数字の組合せ、次...
-
値を入力後、自動的にアクティ...
-
入力したところまでを自動的に...
-
エクセルの数式がかぶって、選...
-
yyyy/mm/ddからyyyy/mmへの変換
-
excel 関数にて文字を0として認...
-
【Excel】セル内の時間帯が特定...
-
エクセルで10分ごとの時刻の...
-
エクセルで時間の判定をしてい...
-
エクセル セルに文字を入力した...
-
マイナス同士の前年比
-
エクセルで複数の条件で掛け算...
-
エクセルで数字10が1に変わる。...
おすすめ情報