アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの時間の入力をする場合、例えばセルに「1000」と打って入れると「10:00」と入力されるようにしたいのですが、やり方が分かりません。
VBA使用してもいいので、やり方を教えてください。
あと、例えば「12/24 10:00」の場合も、テンキーだけで「12/241000」といった形で簡単に出来ないでしょうか?

A 回答 (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にはなりますけど。

この回答への補足

これは参考になりました!
オートコレクトってこういうときに使うんですね。
指定セルだけじゃなくて全体に適応されてしまうのがちょっと困るかもしれないけど、とりあえずこれで間に合いそうです。
ありがとう御座いました!

また、マクロで処理する方法も引き続き募集させていただきます。
宜しくお願いします!

補足日時:2009/12/24 13:24
    • good
    • 0
この回答へのお礼

これは参考になりました!
オートコレクトってこういうときに使うんですね。
指定セルだけじゃなくて全体に適応されてしまうのがちょっと困るかもしれないけど、とりあえずこれで間に合いそうです。
ありがとう御座いました!

また、マクロで処理する方法も引き続き募集させていただきます。
宜しくお願いします!

お礼日時:2009/12/24 13:30

>オートコレクトってこういうときに使うんですね。


ついでに ++ を (半角スペース) にするのは?
12/24++10..00
と入力する
    • good
    • 0
この回答へのお礼

ですね。
最初「...」を「(半角スペース)」に変換するようにしたんですが、「..」と「.」という文と解釈されて「:.」と変換されてしまったんで、慌てて「//」に直しました。
でも良く考えたら「//」や「..」って、結構打ち間違えちゃうんですよね。
例えば普通のセルに、体重を「75.5」と入れようとして..と2回入れちゃったりした場合に自動的にセルが「75:05」とかいう意味不明な数字を表示してしまう恐れがあるので、「+」「-」「*」などを使ったほうがいいのかな、と考えています。
どうもでした!

お礼日時:2009/12/25 11:13

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列は初めから表示形式を文字列にしておくことでしょう。
    • good
    • 0
この回答へのお礼

またしても見知らぬ関数が・・・
TEXTというのは、指定セルの値を指定した表示形式で書き表す関数みたいですね。あとはFINDというのは「/」を探して、ある場合と無い場合で処理を分けるということですかね・・・
動作することは確認しましたが、ちょっと長すぎて混乱してしまいます・・orz
後日内容を吟味してみようと思います。
ありがとう御座いました!

お礼日時:2009/12/25 11:03

TIMEVALUE関数を使えばよいとおもう。


A列を表示形式を前もって文字列にして入力する。そして、0312のように0を省かず入力する。
B列に
=TIMEVALUE(REPLACE(A1,3,0,":")&":00")
REPLACE(A1,3,0,":")は3桁目に:を挿入する式。
ーー
12/241120
の場合
A列        B列       C列
12/2411202009/12/2411:20:00
B列
=DATEVALUE(LEFT(A1,5))
C列
=TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00")
書式表示形式は日付、時刻に設定する。
この式にあわせて2日や3時などでは、0を省かないこと。
1セルに、日付時刻シリアル値にするなら、日付B列+時刻C列の両式をBセル内で+で加えると良い。
    • good
    • 0

TIMEVALUE関数を使えばよいとおもう。


A列を表示形式を前もって文字列にして入力する。そして、0312のように0を省かず入力する。
B列に
=TIMEVALUE(REPLACE(A1,3,0,":")&":00")
REPLACE(A1,3,0,":")は3桁目に:を挿入する式。
ーー
12/241120
の場合
A列        B列       C列
12/2411202009/12/2411:20:00
B列
=DATEVALUE(LEFT(A1,5))
C列
=TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00")
書式表示形式は日付、時刻に設定する。
この式にあわせて2日や3時などでは、0を省かないこと。
1セルに、日付時刻シリアル値にするなら、日付B列+時刻C列の両式をBセル内で+で加えると良い。
    • good
    • 0
この回答へのお礼

日付の値を左から5文字、時間の値を右から4文字とって3文字目に「:」を代入すると言うやり方という捉え方でいいですかね?
ということは、スラッシュも入れないやり方でいくと、
A1 12241120
B1 =DATEVALUE(REPLACE(LEFT(A1,4),3,0,"/"))+TIMEVALUE(REPLACE(RIGHT(A1,4),3,0,":")&":00")
となるわけですね。
REPLACEもDATEVALUEもTIMEVALUEも今まで使ったとこがなかったので、とても参考になりました。
ありがとうございました!

お礼日時:2009/12/25 10:37

セルの表示形式を、ユーザ定義にして、




##":"##


という設定にする、という案は、NGですか?

この回答への補足

回答ありがとう御座います!
それだと実質のセルの数値は1000になっちゃうから時間として扱われないんですよねぇ。
見るだけなら良いんですけど、その入れた数値で計算したい場合に困ってしまうので、申し訳ないですけど他の方法でお願いしますorz

補足日時:2009/12/24 13:17
    • good
    • 0

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