• ベストアンサー

TODAY関数で

エクセルの初歩的な質問ですが、お願いします。 B列に何か文字が入力されると、A列に自動的に今日の日付が入力されるようにしたいのですが、 IF関数を使って 論理式 :B列に何か文字が入力される 真の場合:TODAY 偽の場合:""(空白) としようと思っています。論理式はどのようにすればいいのでしょうか? B欄に入力する文字は決まっていません。 それとも、他の方法ですべきでしょうか?

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.6

#5さんのコードですと、B列のセルをフィルハンドル ドラッグすると 実行エラーになると思いますが・・・ こんな感じで如何でしょうか。 ・使用しているシートのシート名タブを右クリックして「コードの表示」を指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 一旦入力された日付けを、B列を空白にしただけのときは、そのままにするのであれば、 (*) 印の2行を削除します。 内容を変更したときだけ日付けを更新します。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 ・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を  「中」にして[OK]します。 ・以上で設定完了です。  Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Target = Intersect(Range("B:B"), Target) If Target Is Nothing Then Exit Sub For Each Rng In Target   If Rng.Value <> "" Then     Rng.Offset(, -1).Value = Date   Else ' (*)     Rng.Offset(, -1).Value = "" ' (*)   End If Next Rng End Sub

ken123
質問者

お礼

ありがとうございました。 バッチリできました。中身はわかっていませんが・・・・ とりあえずVBAをできるようにがんばっていきます。 なかなか業務的にPCに向かってるいる時間が少ないので大変なのですが、また今後もよろしくお願いします。

その他の回答 (5)

回答No.5

VBAでやってみました。 1. 設定したいブックを開きます。 2. Alt + F11(もしくは「ツール」-「マクロ」-「Visual Basic Editor」)で、Microsoft Visual Basic を開きます。 3. 左側のエクスプローラのツリーのような画面があることを確認。(表示されていなければ「表示」-「プロジェクト エクスプローラ」) 4.適用したいシート(Sheet1とか)を選択 5. 右側のフィールドに、以下のコードを貼りつけます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then If Target <> "" Then Target.Offset(0, -1).Value = Date If Target = "" Then Target.Offset(0, -1).Value = "" End If End Sub

ken123
質問者

お礼

ありがとうございました。 やっぱ関数だけでは無理があいますね。 VBAもマスターするようにがんばります。 今後もよろしくお願いします。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.4

B列に文字が入力された時の日付をA列に表示するというのは関数では難しいと思いますよ。 例えば、 A1セルに =IF(B1<>"",TEXT(TODAY(),"YYYY/MM/DD"),"") では、再計算された日付が表示されるだけですね。 VBAですね。

ken123
質問者

お礼

ありがとうございます。 VBAまでなんとかがんばろうと思ってます。 今後ともよろしくお願いします。

noname#9284
noname#9284
回答No.3

1の方のおっしゃる通りですが、TODAY関数は何か他に変化があった時に自動再計算されます。 例えばどこかのセルに何か入力した時に再計算、そして明日開けば明日の日付、という具合に、です。 ですから、入力した日付を残すにはB列のセルを選択してCtrlを押しながら;(れのキーです)を押しますと、その日の日付が入力されます。これは固定ですので、開いた日によって変化しません。 これを自動でするとしたらVBAですねえ・・・。

ken123
質問者

補足

ありがとうございます。 ctrl+;は知らなかったです。これは固定なのですね。助かります。 VBAはまだわからないのですが・・・・ 関数では無理ですか?・・・・

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

>B列に何か文字が入力されると、A列に自動的に ここですが、たとえば、B1に対してはA1というふうにセル位置が決まっているのなら、A1に =IF(B1="","",TODAY()) という風すればOKです。 ※その際、セルA1の書式の表示形式を日付にしておきましょう。

ken123
質問者

お礼

早速の回答ありがとうございます。 なるほど、逆転の発想ですね。勉強になります。 1の方の補足にも記入させていただきましたが、TODAY関数を固定する方法はありますでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 とりあえず、一例。 =IF(LEN(B1),TODAY(),"") ちなみに、TODAY関数だから、入力した時点の日付が固定値として入るわけではありませんが、それはいいですか?

ken123
質問者

補足

早速のご回答ありがとうございます。 固定値として残さなければなりません。私のレベルは関数を少し初めた程度で、VBAはまったくできません。何か良い方法はありますでしょうか? よろしくお願いします。

関連するQ&A