• 締切済み

Excelの入力

A列に日付がありそれを参照して、右側のセルに時刻を挿入したいのですが、うまくいきません。 なるべくマクロを使わずに固定した時刻を入力しようと思っています。 できなければマクロでも構いませんのでよろしくお願いします。

みんなの回答

  • celena
  • ベストアンサー率19% (26/132)
回答No.10

固定時刻ってことなので、 =TEXT(A2, "YYYY/MM/DD") & " 16:00" で出来ますよ。 これだと日付形式じゃなくて文字列になっちゃいますけどね。 日付形式や時刻形式で保持したいなら、DATEVALUE関数やTIMEVALUE関数をさらに噛ませて下さい。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.9

もし 例えば、A列が 「2015/11/27 19:00:00」 と、なっていれば B列に=aと、入れ 同B列の表示形式の設定を開け ユーザー定義から hh":"mm":"ss と、設定すれば 示唆された結果になる と、思います。 如何でしょうか? もし、役に立った ならば、幸いです。

  • m_and_dmp
  • ベストアンサー率54% (987/1817)
回答No.8

A列のセルに日付を入力した時刻を右のセル(B列)に表示するのは関数だけではできないです。 マクロでは、イベントプロシージャを使います。 VBE(ビジュアルベーシックエディター) を開いて、 プロジェクト(エディターの左側)に表示されているシートをダブルクリックします。 右側にコーディングウインドウが開きますので、General と表示されたバーの右のプルダウンメニューから、Worksheet を選びます。 Worksheet と表示されたバーの右側のバーに(たぶん)SelectionChange と表示され、つぎのコードが自動的に入力されると思います。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー SelectionChange と表示されたバーの右のプルダウンメニューで、Chenge に変更します。 すると、つぎのコードが自動的に追加入力されます。 ーーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Worksheet_Change(ByVal Target As Range) End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーー 前に入力されたコードは削除してください。 つぎに、Sub ... とEnd Sub の間にコードを記述します。 できあがりはつぎのとおりです。 -------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Integer, y As Integer x = Target.Column y = Target.Row If x <> 1 Then GoTo ep Cells(y, x + 1) = Time ep: End Sub --------------------------- これで終わりです。 シートに戻り、A列の任意のセルになんでも書き込むと、その右隣のセルに、その時の時刻が表示されます。 If x <> 1 Then GoTo ep はA列以外のセルに何かを書き込んでも何もさせないためです。 関数だけではできませんが、手数を加えて実現することができます。 B列セルに、  =IF([A列のセルの参照]="","",NOW())    と記入して、下方へオートフィルします。 B1:  =IF(A1="","",NOW()) B2:  =IF(A2="","",NOW()) B3:  =IF(A3="","",NOW()) B4:  =IF(A4="","",NOW())       ・       ・       ・       ・ A列のセルに何かを書き込むとその右のセルに、その時の年月日時刻が表示されます。(表示形式をhh:mm にしておけば、時分が表示されます。) その値は、時間が経過すると変化しますので、固定する必要があります。 時分が表示されたら、そのセルを選択して、まず、F2 ボタンを押し、セルの内容が数式に変わりますので、ついで、F9 ボタンを押します。これでF9 ボタンを押した時の時分に固定されます。 手順は次のようになり、三手、手数が増えます。 A列のセルに日付を入力→入力したセルの右隣のセルを選択→F2キーを押下→F9キーを押下

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.7

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim h as range  on error resume next  for each h in application.intersect(target, range("A:A"))   if h = "" then    h.offset(0, 1).clearcontents   else    h.offset(0, 1) = time   end if  next end sub B列には希望の時間の書式設定を施して置く A列に記入すると自動でB列に今の時刻を記入する。 #参考:別の方法 エクセルのオプションの数式(または計算方法)で「反復計算」のチェックを入れる A列は空っぽにしておく(必ず行う) B列に時刻の書式を設定しておいてから、B2に =IF(A2="","",IF(B2="",NOW()-TODAY(),B2)) と記入、以下コピーしておく A列に記入するとB列に時刻が入る。 エクセルが警告を出したりエラーになるときは手順を間違えているので、回答をよく読みながら必ず書いてある通りに行うこと。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.6

#4です。 A列には日付だけ入力されているんですよね? で、そこを参照する意味は何かあるのでしょうか。 例えば、A列が「2015/11/27 19:00:00」となっていれば 時刻の部分だけをB列に表示させることは可能ですが。 でも他の方へ返信されている内容をみたところ、やはり A列は日付だけなんですよね?ってことは、どこで時刻を 取得するのでしょうか。 手入力ではなく時刻を挿入。。いまいちイメージがつきません。

2ktan
質問者

補足

あ、タイムカードの要領で打刻していきたいんですが無理ですか。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.5

日付を参照して時刻を誕生させる、というロジックが理解できません。 》 A列に日付があり A1 に 2015/11/27 としませう。 「それを参照して、右側のセルに」何時何分何秒の「時刻を挿入したいのです」か? シッカリしてくださいネ!

2ktan
質問者

補足

「それを参照して、右側のセルに」何時何分何秒の「時刻を挿入したいのです」か? の通りです。 Aの列には日付が並んでいます。 2015/11/11 2015/11/12 2015/11/13 2015/11/14 というように。 この日付と今日の日付を選んで、そのセルの右側に時刻を挿入したいのですが、入力するのは避けたいです。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.4

>A列に日付がありそれを参照して、右側のセルに時刻を挿入したいのですが どういうことですか? 「時刻を挿入したい」とか「時刻を入力しようと思ってます」と書かれてますが、 ここで仰ってる挿入と入力は同じ意味なのでしょうか。

2ktan
質問者

補足

手入力ではなく、現在時刻を入力するようにしたいのです。 なので、挿入と書いています。

回答No.3

もしかして「A列の日付の曜日に合わせて、月曜なら何時何分、火曜なら何時何分…」とかやりたいのですか? であれば =CHOOSE(WEEKDAY(A1),TIME(8,0,0),TIME(8,0,0),TIME(8,30,0),TIME(9,0,0),TIME(8,0,0),TIME(10,0,0),TIME(12,0,0)) とかの式で出来ます。 この式は「日曜なら8時、月曜なら8時、火曜なら8時30分、水曜なら9時、木曜なら8時、金曜なら10時、土曜なら12時」を返します。

2ktan
質問者

補足

タイムカードの要領で打刻したいんです。 マクロを使わずに、ハイパーリンク関数でその数値の横に飛ばすことはできたのですが、現在時刻を打刻する事ができません。やはりマクロしかないのかと考えています。関数で全部が処理できればいいのですが、難しいですかね。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 質問者様が仰る >固定した時刻 とは一体何の時刻の事なのでしょうか?  例えばA1セルに 2015/11/27 17:02:45 という日時が入力されていた場合において、B1セルに年月日を除いた 17:02:45 を表示させたいのでしたら、B1セルに次の関数 =IF(AND(ISNUMBER(A1),A1>0),INT(A1),"") を入力しておき、B1セルの書式設定の[表示形式]を[時刻]の 13:30:55 などに設定しておく事で実現出来ます。  そうではなく、例えばA1セルに何らかの日付が入力されている場合には、その日付が何月何日の日付であっても、必ず 08:00 と表示させたいという場合には、B1セルの書式設定の[表示形式]を[時刻]の 13:30:55 などに設定しておいた上でB1セルに次の関数を入力しておく事で実現出来ます。 =IF(ISERROR(1/DAY(A1)),"",TIME(8,0,0)) 或いは =IF(ISERROR(1/DAY(A1)),"","8:0"+0)

  • mpascal
  • ベストアンサー率21% (1136/5195)
回答No.1

具体的に何がしたいのかが理解できません。

関連するQ&A