• ベストアンサー

エクセルで時間を入力する場合

初歩的なことかも知れないのですが質問させてください。 仕事の日報をエクセルで作ってあります。(数年前に会社の同僚が作った) 使いづらい点があり改良したいのですが、出勤時間を入力するセルに、例えば8時50分と入力する場合は「8:50」と入力します。しかし「:」を入力するのがわずらわしく、テンキーだけで入力できるように変更したいのです。できれば「0850」や「8.50」と入力すれば勝手に「8:50」と入力されるようにするにはどうすれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

オートコレクト機能を使えばできます。 ただし、. ですと小数点の入力に困りますので .. とコンマを二つ入力します。 ツール(T)→オートコレクトのオプション→オートコレクト→修正文字列に .. →修正後の文字列に : を入力します(両方とも日本語オフ、半角英数字で)→OK で出来ます。 これで 8..30 と入力すると 8:30 になります。

k2kosuke
質問者

お礼

早速のご回答ありがとうございます。 できました!これなら簡単ですし手間がかからないですね! ついでで申し訳ないですが「0850」と入力した場合の変換方法ももしご存知でしたら教えて頂けませんか? 何パターンか方法があれば、会社のみんなが一番やりやすい方法に修正したいと思っています。

その他の回答 (6)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.7

#6です。 今見ると、抜けてるところがあるね。どうしたんだろ。 ElseIf Len(tm$) < 3 Then tm = TimeValue(Left("00" & tm$, Len("00" & tm$) - 2) & Right(tm$, 2)) Else ↓ ElseIf Len(tm$) < 3 Then tm = TimeValue(Left("00" & tm$, Len("00" & tm$) - 2) & ":" & Right(tm$, 2)) Else だね。

k2kosuke
質問者

お礼

訂正ありがとうございました。 ちょっと悩みながらいろいろ変更してみてどう変化するか試しています。 皆さん、回答ありがとうございました。もう少ししたら締め切ろうと思います。ご協力感謝してます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.6

VBAでやるしかないね。 シートモジュールに次のようなコードを書いておけばいいだろう。 時刻入力範囲をA1:A20とした例 入力は、850、0850、130、0130、0015、15、0001,1など。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Column = 1 And Target.Row <= 20 Then tm$ = Target.Value If Len(tm$) > 4 Then MsgBox "Error" ElseIf Len(tm$) < 3 Then tm = TimeValue(Left("00" & tm$, Len("00" & tm$) - 2) & Right(tm$, 2)) Else tm = TimeValue(Left(tm$, Len(tm$) - 2) & ":" & Right(tm$, 2)) End If Target.Value = tm End If Application.EnableEvents = True End Sub

k2kosuke
質問者

お礼

回答ありがとうございます。 こんな方法もあるのですね。今までVBAとかマクロとか、敷居が高いので簡単なマクロの記録程度しかやったことがなかったんですけど、これをきっかけに勉強してみようと思います。教えて頂いたものもこちらで使っているファイル用に変更しないといけませんから、勉強が必要ですね。でもひとつひとつ意味を追っていくと、なんとなく「この命令はこういうことを意味しているんだな」というのがわかるので、やりがいがありそうです。 わざわざ作っていただいて恐縮です。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

同じような質問は、このサイトで何回も拝見しました。 >会社のみんなが一番やりやすい方法に修正したいと思っています。 これは、時間の入力時は:で区切る。日付の入力時は/で区切る。 これを習慣づけた方が使いやすいと思います。 今、パソコンの学校などでエクセルを勉強している方は:と/は既に 日付や時間の区切りと教えられています。 エクセルでもそのように入力することで、時間や日付としての対応を自動で行ってくれます。 会社では、テンキーの付いていないノートパソコンを使用する機会も多いとはずです。 右手と左手の操作に慣れることも必要でしょう。 結果として:や/の入力とその意味になれたほうが色々とトータル的にも便利だと思います。

k2kosuke
質問者

お礼

ご回答ありがとうございます。 んー、時間や日付は:や/で区切るのを習慣付けるとのことですが、実際に今までそれをしてきて多くの人が不便を感じているからこそ同じような質問が何回もあるわけで、その入力方法に慣れたら結果的に便利な人も多くいるでしょうが(仕事に活用できる・エクセルなどを扱うのに応用が利くなど)、まったく必要のない、とにかく時間の入力を手間をかけずに済ましたい人たちも多くいるわけで、一概には言えないんじゃないかな、と私は思います。 知識として区切りを知っておいて、でも実際の入力(ここでは日報の出社・退社時間)は数字4つの入力で済ますほうが、ちょっとだけ効率の良いものになるんじゃないかと思います。ブラインドタッチができる人なら:くらい問題ないと思いますが、両手人差し指で入力する人だと:をひとつ入力するにも数秒かかってしまいますからね。私の会社にもPCが得意な人も苦手な人も、若い人もパートのおばちゃんもいるので入力ミスも多いんですよ。 別にhallo-2007さんに反論、て言うんじゃないので気を悪くしないで下さいね。あくまで私なりの思いということですので。 ご意見ありがとうございました。社員にもその辺の知識を少しずつ知って貰いますね。 ちなみに全然関係ないですが、最近の私の中のヒットは「ctrl+;」で本日日付、「ctrl+:」で現在時間がエクセルに入力されることです。特に日付入力はすごく便利に思ってます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

答えNo3です。 エクセルを使うにはある程度のルールは我慢しなければなりません。すべてが望み通りとはなりません。 元の人が作った表で今更直せませんということでしたら、例えばA列のデータが使われるとしたら時間の入力は全く関係のない、例えばL列に0850とか入力するようにしてA列にはこちらが提案した式をL列を参照する形で入力するなどにすればよいでしょう。 元の人が作ったデータで8:50と入力すると数式バーでは8:50:00と表示されることが誤りの原因のように考えておられるようですが、全く正常なことです。数式バー上では秒の表示までが含まれて表示されているのです。 元の人は0850といった入力は考えていなかったのでしょう。正常な感覚だと思います。

k2kosuke
質問者

お礼

再度の回答ありがとうございます。 >元の人が作ったデータで8:50と入力すると数式バーでは8:50:00と表示されることが誤りの原因のように考えておられるようですが・・・ 誤りと思っているわけではなくて、表示形式を「0":"00」として入力した場合、数式バーの表示が元の表示と変わってしまうので、そこを参照する計算式がうまく機能しないことを言いたかっただけですよ。私もまったく正常なことと思っています。言葉足らずですみません。 そしてご提案いただいている案ですが、確かにまったく関係の無い離れた列に入力するようにすれば良いだけですね。他の計算式に影響なくできそうですので最初からあきらめずに一度やってみます。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

0850などの場合にはセルの表示形式から8:50のように表示させることはできますが8.50を表示形式で8:50のように表示させるのはできないでしょう。 仮に表示形式で8:50のように表示できたとしても時間の計算にそのまま使うことはできません。 そこで例えばA列では0850 とか8.50と入力するとしてそれをB列で直接時間計算にも使える8:50のように表示させるようにしてはどうでしょう。そのためにはB1セルに次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(A1="","",IF(ISERROR(FIND(".",A1)),TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),0),TIME(LEFT(A1,FIND(".",A1)-1,IF(LEN(A1)-FIND(".",A1)=2,RIGHT(A1,2),RIGHT(A1,1)*10),0))) この式はどちらの入力形式でも対応できるようになっていますが0850のような形式だけの場合にはより式を簡略化すればよいでしょう。 なお、B列でのセルの表示形式は時刻にします。 当然ですが時間の計算にはB列の値を使うことになります。

k2kosuke
質問者

補足

こんな質問に式まで考えて頂いて本当にありがとうございます。 なるほど、実際に入力する場所と時間計算に使うセルを分けて計算させるのですね。 しかし申し訳ないのですが、これを作った人はすでに会社を辞めており、あまり変更すると他の部分に支障が出る恐れがあるので大幅な変更はちょっと難しそうです。シート保護解除のパスワードはわかるので色々と変更はできるのですが、どこにどういう計算式があって、それがどこまで影響するのかわからないのです。私もあまり関数には詳しくないもので。。。 No.1さんとNo.2さんの方法でやってみると、「..」と2回入力する必要はありますがうまくいきました。 自分でも他に調べてみたらセルの表示形式で「0":"00」にするとよい、と出ていたのでやってみました。「0850」の入力で「8:50」となり、喜んでいたのですが計算がうまくいかず、NGでした。もともとのファイルでは「8:50」と入れると「8:50」と表示されますが、数式バーには「8:50:00」と表示されるので、ここが変わってしまうからうまくいかないのでしょうね。 人間、欲が出るもので「..」の2回入力でもかなり入力がラクになったにも関わらず、もっと他にもいい方法が無いかと考えてしまい・・・。 他の方法を思いつかれたらぜひ教えてください。今は「..」で行くつもりですが、できれば「0850」で入力できればなお嬉しいです。 わがままですみません。

回答No.2

探せばたくさんあるようです。 http://www.fujicom.co.jp/salon/it_info/51/51.html

k2kosuke
質問者

お礼

ご回答ありがとうございます。 ホントですね、一応検索して探したんですけどこういうのが見つけられなくて安易に聞いてしまいました・・・。 他の検索ワードで調べてみたら色々と出てきたので、自分でもう一度探してみます。お手数をお掛けしました。

関連するQ&A