- ベストアンサー
TODAY関数で
エクセルの初歩的な質問ですが、お願いします。 B列に何か文字が入力されると、A列に自動的に今日の日付が入力されるようにしたいのですが、 IF関数を使って 論理式 :B列に何か文字が入力される 真の場合:TODAY 偽の場合:""(空白) としようと思っています。論理式はどのようにすればいいのでしょうか? B欄に入力する文字は決まっていません。 それとも、他の方法ですべきでしょうか?
- みんなの回答 (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
その他の回答 (5)
- shishishishi
- ベストアンサー率39% (362/921)
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
お礼
ありがとうございました。 やっぱ関数だけでは無理があいますね。 VBAもマスターするようにがんばります。 今後もよろしくお願いします。
- arukamun
- ベストアンサー率35% (842/2394)
B列に文字が入力された時の日付をA列に表示するというのは関数では難しいと思いますよ。 例えば、 A1セルに =IF(B1<>"",TEXT(TODAY(),"YYYY/MM/DD"),"") では、再計算された日付が表示されるだけですね。 VBAですね。
お礼
ありがとうございます。 VBAまでなんとかがんばろうと思ってます。 今後ともよろしくお願いします。
1の方のおっしゃる通りですが、TODAY関数は何か他に変化があった時に自動再計算されます。 例えばどこかのセルに何か入力した時に再計算、そして明日開けば明日の日付、という具合に、です。 ですから、入力した日付を残すにはB列のセルを選択してCtrlを押しながら;(れのキーです)を押しますと、その日の日付が入力されます。これは固定ですので、開いた日によって変化しません。 これを自動でするとしたらVBAですねえ・・・。
補足
ありがとうございます。 ctrl+;は知らなかったです。これは固定なのですね。助かります。 VBAはまだわからないのですが・・・・ 関数では無理ですか?・・・・
- hinebot
- ベストアンサー率37% (1123/2963)
>B列に何か文字が入力されると、A列に自動的に ここですが、たとえば、B1に対してはA1というふうにセル位置が決まっているのなら、A1に =IF(B1="","",TODAY()) という風すればOKです。 ※その際、セルA1の書式の表示形式を日付にしておきましょう。
お礼
早速の回答ありがとうございます。 なるほど、逆転の発想ですね。勉強になります。 1の方の補足にも記入させていただきましたが、TODAY関数を固定する方法はありますでしょうか?
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 とりあえず、一例。 =IF(LEN(B1),TODAY(),"") ちなみに、TODAY関数だから、入力した時点の日付が固定値として入るわけではありませんが、それはいいですか?
補足
早速のご回答ありがとうございます。 固定値として残さなければなりません。私のレベルは関数を少し初めた程度で、VBAはまったくできません。何か良い方法はありますでしょうか? よろしくお願いします。
お礼
ありがとうございました。 バッチリできました。中身はわかっていませんが・・・・ とりあえずVBAをできるようにがんばっていきます。 なかなか業務的にPCに向かってるいる時間が少ないので大変なのですが、また今後もよろしくお願いします。