ここから本文です

TODAY()で入力した日付を残す方法について教えてください

shi********さん

2012/5/1903:53:37

TODAY()で入力した日付を残す方法について教えてください

まず、現在次のような条件を[B1]セルに設定しています。

【関数】
B1=IF($A1="対応日",TEXT(TODAY(),"yyyy/mm/dd")

【条件】
Aセルが"対応日"を選択した場合、B1に当日(動作的には選択した日付となります)の日付を反映される。

現在の状態では、ブックを開くたびにB1の日付が更新され実際に対応した日付が残らない状態となっています。
これを
「Aセルが"対応日"と選択した日付を残した状態にする。」にはどのようにすればよいでしょうか。

どなたかお分かりになる方いられたら教えてください。

閲覧数:
1,921
回答数:
4

違反報告

ベストアンサーに選ばれた回答

msk********さん

2012/5/1908:21:41

マクロ(VBA)ですが如何でしょうか。
対象シートタブ上で右クリック→コードの表示→サンプルコード貼り付けてお試しください。
因みにA列に「対応日」を入力で右列に当日を表示、その他の入力は右列をクリアします。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then End
For Each a In Target
If a = "対応日" Then
a.Offset(, 1).NumberFormat = "@"
a.Offset(0, 1) = Format(Date, "yyyy/mm/dd")
Else
a.Offset(0, 1).Clear
End If
Next
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

らうたんさん

編集あり2012/5/1909:16:45

どうしてもというのならイベントマクロを使えばできますが、イベントマクロは扱いが難しいです。

イベントマクロは標準モジュールではなくシートやブックレベルに記述するマクロで、普通の標準モジュールに記述するマクロでは出来ないことも出来ますが、そのシートのメンテナンス性が悪くなるのでお勧めはしません。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim r As Range
For Each r In Target
If r.Column = 1 Then
If r.Value = "対応日" Then
Cells(r.Row, 2).Value = Format(Now(), "yyyy/mm/dd")
End If
End If
Next r
Application.EnableEvents = True
End Sub

プロフィール画像

カテゴリマスター

2012/5/1908:06:09

関数は「入力」するためではなく「表示」するために使います。また、todayは任意の日付ではなく「今日」しか返しません。

今日の日付を「入力」するなら、たしかcontrol+;で一発入力のはずですよ。これが一番手数が少ない。

kik********さん

2012/5/1905:02:16

通常、数式入力後の確定は、[Enter]キーで行いますが、そのときは当然そのセルには数式が残ります。

この確定時に[F9]キーを使うことで、計算式ではなく計算結果がそのセルには残るようになります。

既に計算式が入力されている場合でも、計算式の入力されているセルを選択後、数式バーをクリックして[F9]キーを押すと、計算結果だけが残ります。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる