• ベストアンサー

Excelで日付を挿入

このセルを入力した日付を、こっちのセルに自動で入れる方法を教えて下さい。 入力日なので、TODAY() では上手くいきません。 セルが入力されて居ないときは、空白にしたくて、=IF(A1="","",TODAY()) なんて事もしてみたのですが、現在の日付で入力日ではないので上手くいきません(当たり前ですが…) 多分No.101と同じ質問だと思うのですが、何せ初心者なので意味が判りません。 もう少し判り易く教えていただけるとありがたいです。お願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

>B4…A4と言う感じに、入力するセルと、日付を入力させたいセルは同じ行内で、200行以上あります。 内容がはっきりすれば、複雑そうな問題も返って簡単になったりします。 入力の左側が出力セルなので、出力範囲の指定は不要で、『Offset(0, -1)』で入力セルの左を指定しています。 重複するコメント部分は省略しました。 Const 入力範囲 = "B2:B200" '自分で指定します!! Private Sub Worksheet_Change(ByVal Target As Range)   Dim inpRange As Range '入力するセル範囲   Dim rg As Range '単一セル   On Error GoTo ErrorHandler   Set inpRange = Range(入力範囲)   Application.EnableEvents = False   '入力範囲の単一セルを操作した時、   '複数セルを操作して入力した時、消去した時に正常に動くように単一セルで処理する   For Each rg In Target     If Not Intersect(inpRange, rg) Is Nothing Then       If rg.Text <> "" Then         '入力があれば日付を入力したセルの左に書き込む         rg.Offset(0, -1) = Format(Now(), "yyyy/mm/dd")       Else         '入力を消去したら日付を消去する         rg.Offset(0, -1) = ""       End If     End If   Next   Application.EnableEvents = True   Exit Sub ErrorHandler:   Application.EnableEvents = True End Sub

LiLi39
質問者

お礼

ほんとうに何度もありがとうございました。 とても助かりました。 これを機会に、少しVBAと、大いに日本語の勉強をしたいと思います。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>このセルを入力した日付を、こっちのセルに自動で入れる方法を教えて下さい。 >入力日なので、TODAY() では上手くいきません。 意味を理解しているやら・・・自分なりに言葉を変えてみました。   あるセルに入力をした時、その日の日付(入力日:入力している時の日付)を、   別のセルに自動で書き込みたい。   TODAY()などの関数を使えば書き込めるが、次に(別の日に)Bookを開くと、   入力日だった日付が当日に書き換わってしまう。       ・・・あってる? (1)算式を埋め込めば日付は表示できますが、Today()もNow()も固定した日付にはできません。    保存する時に値に変えてしまえば別ですが。 (2)ショートカットキー『Ctrl+;(セミコロン)』でToday()の日付を固定した日付として入力できます。    未入力の場合は『Ctrl+;』をしなければいいですが、入力値を消した場合は日付を消す必要があります。 (3)マクロを使う方法です。(Sheet1での例です)    ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラで    プロジェクトエクスプローラを表示します。    プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロを    コピーして貼り付けます。      Const 入力範囲 = "B2:D10"      Const 出力範囲 = "E2"    の2行は例です。ご自分のシートの要件に合うように修正してください。    今は、B2:D10に入力があれば、E2にその日の日付を書いています。各行コメントを参照して下さい。 ここから ↓ 'この入力範囲に入力があれば次の『出力範囲』に日付を書きます。自分で指定します!! Const 入力範囲 = "B2:D10" '日付を書くセル。自分で指定します!! Const 出力範囲 = "E2" ' Private Sub Worksheet_Change(ByVal Target As Range)   Dim inpRange As Range '入力するセル範囲   Dim outRange As Range '出力セル   'エラーが起きた時の対応   On Error GoTo ErrorHandler   '入力するセル範囲を定義   Set inpRange = Range(入力範囲)   'マクロでセルの内容を書き換える(日付を書く)が、再度イベントが起きないようにする   Application.EnableEvents = False   'Intersectは、複数のセル範囲の共有セル範囲を表します   '  入力範囲(inpRange)と入力したセル(Target)の共有セルを求め、   '  共有セルがあれば、指定した入力範囲への入力と判断して次の処理を行う   If Not Intersect(inpRange, Target) Is Nothing Then     '出力するセルに日付を値として出力します。     '値なので、次にBookを開いても更新されません。     Range(出力範囲) = Format(Now(), "yyyy/mm/dd")   End If   '入力した後、入力範囲を調べて、何も入力されていなかったら、   '出力範囲に書き出した日付を消去しています。   'この処理が不要なら、If~End If の3行を削除します。   If Application.CountA(inpRange) = 0 Then     Range(出力範囲) = ""   End If   '次の入力のために、イベントが起きるようにする   Application.EnableEvents = True   Exit Sub ErrorHandler:   'エラーが起きたら、イベントが起きるようにしてマクロを終わる   Application.EnableEvents = True End Sub

LiLi39
質問者

補足

言葉足らずですみません。 上記だと、日付を書くセルは一箇所になるのですか? B2セルに入力した時に、A2セル B3セルに…A3セル B4…A4と言う感じに、入力するセルと、日付を入力させたいセルは同じ行内で、200行以上あります。 全てが同じ日に入力するのではなく、この日に3行、この日は10行入力することもある…って感じなのですが。 まったく説明が下手ですみません… Const 入力範囲 = "B2:D10" Const 出力範囲 = "E2" のところを変えたら良いのかと思って、出力範囲を"A2:A100"の様にしたら、全部が同じ日付になってしまって、どうしたら良いか判りません。 申し訳ないですけど、もう少し教えてもらえませんか。 よろしくお願いします。

  • imparfait
  • ベストアンサー率43% (52/120)
回答No.1

「このセル」や「こっちのセル」という表現では、何を指しているのか分かりませんが、あるひとつのセルで入力した日付を他のセルに自動的に入れるなら、単に次のようにすれば済みます。 例えば、A1に入力した日付を、自動的にB1に表示させるには、 B1に =IF(A1="","",A1) と入力してください。

LiLi39
質問者

お礼

ありがとうございます。 それも試したのですが、ちょっと違ったようでした。 ほんと、言葉足らずですみません。

関連するQ&A

  • Excelで、セルに'1'が入力されたら、そのセルに今日の日付を入れる

    Excelで、セルに'1'が入力されたら、そのセルに今日の日付を入れる方法。 をしらべているのですが、分かりません。A1セルに =IF(A1="1",=TODAY(),"") と入力すると、循環参照でエラーになってしまいます。 どのようにすればよいのでしょうか?

  • エクセル 日付表示

    エクセルで、A1に文字や数字を入力すると B1ではその日の日付を自動的に表示させたいの ですが、today()を使うと日付も変わるので 日付を変えない方法を教えてください。

  • Excelで違うシートから日付を引っ張ってきたい

    すいませんが教えてください。 EXCELでAのシートとBのシートがあって、 Aのシートに日付を入力していきます。 その日付をBシートに引っ張ってきたいのですが、 ='Aシート'!A2 とBシートのA2に入れると Aシートの空白セルでは 「1月0日」となってしまいます。 空白セルは同じように空白セルにしたいのですが、 やり方がわかりません。 よろしくお願いします。

  • Excel(エクセル)自動入力と入力前非表示

    4月~12月を前年、1月~3月を今年とするために、 年セル=IF(MONTH(日付セル)<4,2017,2016) とした場合、日付セルが空欄の場合に表示させないようにする方法はありますか? また、後から行を挿入した場合に、年セル=IF(MONTH(日付セル)<4,2017,2016)と自動に入力される方法はありますか? ※ マクロやVBAは使えません。初心者です。 例 :   年   日付 A1 2017 1月20日  A2 2016 5月25日 A3    7月18日 ←後から挿入したセルに自動的に数式を入力したい。 A4 2017      ←まだ日付を入力していないのに、2017と表示される。非表示にしたい。 ※ 日付は、1/20というように、スラッシュで入力しています。自動的に月日になるので。 宜しくお願いいたします。

  • Excelのマクロで基準日から見た日付の前後を判定したい

    Excelのマクロについて質問です。 初歩的な内容かもしれませんが よろしくお願いします。 マクロで日付を扱おうとしたのですが うまくいきませんでした。 ある日付が基準日から見て前の日か後ろの日かを 判定しようとしたのです。 たとえば セルA1に入力した日付が 今日より先ならセルB1に「1」を 後なら「2」を表示しようとして If Range("A1") > "=TODAY()" Then Range("B1") = 1 Else Range("B1") = 2 End If このようにすると セルA1にどのような日付を入れても セルB1は「2」と表示されてしまうのです。 "=TODAY()" の部分に問題があるのでしょうね。 でも、確かこれで今日という日付を 表しているのではなかったでしょうか… 日付はどのように扱われているのでしょう。 回答をお待ちしております。

  • 【エクセル】日付を、その都度、自動入力するには?

    タイトルの件、質問いたします。 下記の図の【日付】の項目に 通常は、手入力で、日付を入力します。 この作業を、もう少し、少ない工数で、自動入力できないでしょうか?? あくまでも、空白セルに、そのつど、入力します。 入力した日付は、固定で、変わらないようにしたいです。TODAY関数のようにはならないように したいです。 ご存知の方、いらっしゃいましたら、宜しくお願いします。

  • 記入した日付

    エクセルについて。 あるセルに記入した日付(5月2日など)を、他のセルに自動的に記入したいです。 B1セルに =IF(ISNUMBER(A1),TODAY(),"") で良いと思ったのですが、再計算(?)などで、すべて当日になってしまいました。 よろしくお願いいたします。 エクセル2007

  • エクセルで自動的に日付を出したい

    エクセル2002を使っています。 Aセルに日付、Bセルに時刻を(それぞれ現在のもの、更新なし)入れたいのですが、 コントロール+;  コントロール+:を入れれば入りますが、 そこのセルを選択しただけで、自動的に入るとか・・出来たらいいな~と 思っています。 選択しただけでは無理なら、もう一段階簡単に入る方法は無いでしょうか? 上のほうに現在日付時刻を表示させていますので、そこから自動的に 持ってくることでもいいのです。 初心者が突拍子も無いおかしな事を聞いているかもしれませんが、 よろしくお願いいたします。

  • エクセル 関数の結果が日付になるようにする方法

    エクセル2003を使用しています。 現在、シートAのセルT20に、1月16日と入力すると シートBのセルA5に、自動的に1月16日と表示されるようになっています。 (シートBのA5の数式は、 =シートA!T20 です。) この場合、シートAのセルT20が空白の場合、 シートBのセルA5は、1月0日 と表示されます。 シートAで空白の場合は、シートBでも空白にしたいので、 シートBのセルA5の数式を =シートA!T20&IF(シートA!T20="","",) としました。 すると、結果が、40559 となってしまいます。 セルの表示形式を日付にしても、どうしても数字になってしまいます。 どうすればよいか教えてください。 よろしくお願いいたします。

  • ☆Excelエクセルで入力した日の日付を表示したいです☆

    こんばんは!エクセルで、なにかデータを入力した横のセルに、その日の日付が自動的に入るような方法があれば、是非教えてくださいm(__)m横の列に手動で日付を入力すればよいといえばよいのですが^^;その列には、また別の日に、追加でデータを入力していきたいですので、前の日の日付もその日の日付も残るようにしたいんです。today関数とかじゃ全部その日になってしまいますよね。。。もし、データを入力しただけで、そのようなことができる方法があれば、是非教えてください。よろしくお願いしますm(__)m

専門家に質問してみよう