• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 簡単に時間入力をしたい)

エクセルで簡単に時間入力する方法とは?

このQ&Aのポイント
  • エクセルで特定の入力に対応する時間を簡単に表示する方法を知りたいです。
  • Eセルに1を入力するとGセルには入力時間が表示されます。
  • Eセルに2を入力するとGセルには8時から12時までのランダムな時間が表示されます。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

このコーナーに今までに無かったタイプの問題と思います。 EとかGとかはE1,G1の意味ですか。E,G列全体ですか。 (2)以後は問題ないということですが <問題ないなら、質問に(2)-(5)を書かないでほしい。複雑そうに見えるだけ。それとも(2)-(5)は(1)と関係しそうなのですか?) (1)は私なら、=NOW()-INT(NOW())  とし、書式を時刻の13:30:50 にしました。(素直に=NOW()でも良いでしょう) (2)以下は RANDBETWEENは整数を返すので、使いづらい。 RAND関数を使ってやる。 これには、時刻を1以下の小数で表す、エクセルの時刻のセルの値のしくみを理解しておく必要があると思う。それで 例えば G1:I7に G列  H列  I列 8 0.333333 8:00 12 0.500000 12:00 17 0.708333 17:00 19 0.791667 19:00 21 0.875000 21:00 0 0.000000 0:00 3 0.125000 3:00 のうちG列は参考で数字入力する I列に時刻を8:00のように入力する(エクセルの時刻入力)。 I列をコピーしH列に張り付け、書式を、数ー小数点以下6桁とかにしておく(セルの「値」)。 ーー 以上から、8-12時の時刻的乱数ということは 0.333333 と0.500000 の間の小数を発生させれば良い。 =RAND()は0-1未満の小数を発生させるので、 =RAND()*(H2-H1)+H1  1の時H2、0の時H1の間を返す。 (3)ー(5)も同じ。 E1の値で、IF関数で長い式で条件分岐することになるかな。 ただ8時はでそうだが、(RANDが1未満なので)12時は出ないのでどうすると良いかは、今はわからない。 上記のようにやりましたか。別の良い方法がありましたか。 ーーー >、(1)にNOWを使うと他のEセルに入力をした際にすべて同じ時間になってしまって困っています。 この意味が良くわからない。 色々な別のセルにNow()関数を使っているとき、みんな同じになるのはどうしようもないのでは。 CTRL+:で対処するとか。 乱数のSeedをVBAで変えても、現在時刻は1つしかないのだから意味ない。 セットされるとき値化すればその時刻は残るが、そのセルの式=NOW()は壊れてしまい、次ぎの機会の時刻を捉えられない。 捉えられなくて良いのかな。 ==== 質問を補足しては? どのとどこのセルにNOW()を入れようとしており、どうしたいのかを。 ーー 第1行の入力があればG1セルに9:30:01 第4行に入力があれば、G4に10:20:03 のように入力時刻を入れたい(固定したい)ということかなと思うが、もしそうでも質問からはそう採りにくい。 この意味ではないですか。 VBAならイベントという考えになるが、そういうのを経験ありますか。

prtcw794
質問者

補足

回答ありがとうございます。補足しようと思います ちなみに、私がはじめに載せた文章で また、できればG列の表示時間を他のセルで(=IF(G1=<>"",…)と参照したい為全てをマクロで設定できれば…、と思います。ちなみ対応セルはにE1からE60まで、G1からG60までです。 は削除でお願いします >EとかGとかはE1,G1の意味ですか。E,G列全体ですか。 E1に"1"を入力するとG1に"9:30"等、現在時刻ではなく入力時刻を固定で入れたいです E4に"5"を入力するとG4に"1:20"等0時~3時までの時間がランダムに表示 (いずれも秒は表示の必要がなく、その他の数字等では反応しない様にする。E1入力後にE4を入力したりするのでNOWではむずかしい…) 現在使用しているのは G列にコピー貼り付けで =IF(E3=2,"8:00:00"+RAND()*("12:00:00"-"8:00:00"),IF(E3=3,"12:00:00"+RAND()*("17:00:00"-"12:00:00"),IF(E3=4,"19:00:00"+RAND()*("21:00:00"-"19:00:00"),IF(E3=5,"0:00:00"+RAND()*("3:00:00"-"0:00:00"),""))))) という感じで、セルの書式設定の表示形式、時刻13:30に設定しています。 +マクロのwooksheetのchangeで Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Or Target.Row > 60 Then Exit Sub If Target.Column <> 6 Then Exit Sub Target.Offset(0, 2).Value = Date & " " & Time End Sub を組み込んでいます。(上記のマクロはもらった物で書き方などは全くわかりません…。) (If Target.Column <> 6 Then Exit Sub)の6(F列)はわざと5(E列)としていません。E列が変化すると…という設定にするとマクロの方が強力な為、RAND関数が壊れてしまい"2"や"3"を入力しても入力時刻が表示され困ります。 そこで、今回質問したのは (1)VBAにて現在はwooksheetのchangeを設定しているのですが"1"や"3"等特定の数字に反応して、それぞれ設定時間の表示ができるようにするマクロがあれば教えてほしい…。上記のようにE列F列を分けるのではなく、作業はE列だけにしたいのです。 (2)関数にて IF(E3=1,NOW(),… とすると入力時間を固定できないので、自動で固定する方法、他の関数を使用する例等があればおしえてほしい とにかく、入力時間を固定で表示+ランダム表示の混在ができればVBA、関数どちらでもOKです

関連するQ&A

専門家に質問してみよう