- ベストアンサー
エクセルの時間入力を簡単にする方法
エクセルの時間の入力をする場合、例えばセルに「1000」と打って入れると「10:00」と入力されるようにしたいのですが、やり方が分かりません。 VBA使用してもいいので、やり方を教えてください。 あと、例えば「12/24 10:00」の場合も、テンキーだけで「12/241000」といった形で簡単に出来ないでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
質問者様の希望とは多少異なりますが、私はテンキーのみで時間を入力 できるようにしてます。 ツールバーのツール⇒オートコレクトのオプションで オートコレクトタブを開き、 修正文字列に..(コンマ2つです) 修正後の文字列に:(コロンです) を入力しますと、 10..00と入力すれば10:00と自動でなりますよ。 12/24 10:00の場合も12/2410..00と入力すれば12/24と10:00の間にスペースは入りませんが、12/2410:00になります。 12/24.10..00なら12/24.10:00にはなりますけど。
その他の回答 (5)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>オートコレクトってこういうときに使うんですね。 ついでに ++ を (半角スペース) にするのは? 12/24++10..00 と入力する
お礼
ですね。 最初「...」を「(半角スペース)」に変換するようにしたんですが、「..」と「.」という文と解釈されて「:.」と変換されてしまったんで、慌てて「//」に直しました。 でも良く考えたら「//」や「..」って、結構打ち間違えちゃうんですよね。 例えば普通のセルに、体重を「75.5」と入れようとして..と2回入れちゃったりした場合に自動的にセルが「75:05」とかいう意味不明な数字を表示してしまう恐れがあるので、「+」「-」「*」などを使ったほうがいいのかな、と考えています。 どうもでした!
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルから下方に1000や12/241000などが入力されているとしたらB1セルには次の式を入力し、下方にオートフィルドラッグします。 =IF(ISERROR(FIND("/",A2)),TEXT(TIME(LEFT(A2,2),RIGHT(A2,2),0),"hh:mm"),TEXT(DATE(YEAR(TODAY()),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)),"mm/dd")&" "&TEXT(TIME(MID(A2,FIND("/",A2)+3,2),RIGHT(A2,2),0),"hh:mm")) なおA列では日にちは必ず2ケタで、時間は必ず4ケタで入力してください。 1時の場合には'0100のように文字列の形で入力することが必要です。むしろA列は初めから表示形式を文字列にしておくことでしょう。
お礼
またしても見知らぬ関数が・・・ TEXTというのは、指定セルの値を指定した表示形式で書き表す関数みたいですね。あとはFINDというのは「/」を探して、ある場合と無い場合で処理を分けるということですかね・・・ 動作することは確認しましたが、ちょっと長すぎて混乱してしまいます・・orz 後日内容を吟味してみようと思います。 ありがとう御座いました!
- imogasi
- ベストアンサー率27% (4737/17069)
TIMEVALUE関数を使えばよいとおもう。 A列を表示形式を前もって文字列にして入力する。そして、0312のように0を省かず入力する。 B列に =TIMEVALUE(REPLACE(A1,3,0,":")&":00") REPLACE(A1,3,0,":")は3桁目に:を挿入する式。 ーー 12/241120 の場合 A列 B列 C列 12/241120 2009/12/24 11:20:00 B列 =DATEVALUE(LEFT(A1,5)) C列 =TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00") 書式表示形式は日付、時刻に設定する。 この式にあわせて2日や3時などでは、0を省かないこと。 1セルに、日付時刻シリアル値にするなら、日付B列+時刻C列の両式をBセル内で+で加えると良い。
- imogasi
- ベストアンサー率27% (4737/17069)
TIMEVALUE関数を使えばよいとおもう。 A列を表示形式を前もって文字列にして入力する。そして、0312のように0を省かず入力する。 B列に =TIMEVALUE(REPLACE(A1,3,0,":")&":00") REPLACE(A1,3,0,":")は3桁目に:を挿入する式。 ーー 12/241120 の場合 A列 B列 C列 12/241120 2009/12/24 11:20:00 B列 =DATEVALUE(LEFT(A1,5)) C列 =TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00") 書式表示形式は日付、時刻に設定する。 この式にあわせて2日や3時などでは、0を省かないこと。 1セルに、日付時刻シリアル値にするなら、日付B列+時刻C列の両式をBセル内で+で加えると良い。
お礼
日付の値を左から5文字、時間の値を右から4文字とって3文字目に「:」を代入すると言うやり方という捉え方でいいですかね? ということは、スラッシュも入れないやり方でいくと、 A1 12241120 B1 =DATEVALUE(REPLACE(LEFT(A1,4),3,0,"/"))+TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00") となるわけですね。 REPLACEもDATEVALUEもTIMEVALUEも今まで使ったとこがなかったので、とても参考になりました。 ありがとうございました!
- DIooggooID
- ベストアンサー率27% (1730/6405)
セルの表示形式を、ユーザ定義にして、 ##":"## という設定にする、という案は、NGですか?
補足
回答ありがとう御座います! それだと実質のセルの数値は1000になっちゃうから時間として扱われないんですよねぇ。 見るだけなら良いんですけど、その入れた数値で計算したい場合に困ってしまうので、申し訳ないですけど他の方法でお願いしますorz
お礼
これは参考になりました! オートコレクトってこういうときに使うんですね。 指定セルだけじゃなくて全体に適応されてしまうのがちょっと困るかもしれないけど、とりあえずこれで間に合いそうです。 ありがとう御座いました! また、マクロで処理する方法も引き続き募集させていただきます。 宜しくお願いします!
補足
これは参考になりました! オートコレクトってこういうときに使うんですね。 指定セルだけじゃなくて全体に適応されてしまうのがちょっと困るかもしれないけど、とりあえずこれで間に合いそうです。 ありがとう御座いました! また、マクロで処理する方法も引き続き募集させていただきます。 宜しくお願いします!