プロが教えるわが家の防犯対策術!

指定セルに日付が表示されると違うセル値にその日受けを反映できる方法を教えてください。
例えば
①セルC2に日付(2023年3月1日)と表示されるとE2に(2023年3月1日)と表示
②セルC2に日付(2023年4月1日)と表示されるとE2に(2023年3月1日)と表示とE3に(2023年4月1日)と表示
③セルC2に日付(2023年6月1日)と表示されるとE2に(2023年4月1日)と表示とE3に(2023年6月1日)と表示
④セルC2に日付(2023年9月1日)と表示されるとE2に(2023年6月1日)と表示とE3に(2023年9月1日)と表示「別添の画像の参照をお願いいたします。」
C2の日付はランダムに変更されますが、必ず、前回の日付より未来の日付になります。
C2の日付が変更になった場合に元の日付がE2に変更になった日付がE3に順次変更出来るように設定出来る方法を教えてください。
この設定はExcelの数式で可能なのでしょうか?又は、マクロでの設定になるのでしょうか?
教えてください。
よろしくお願いいたします。

「エクセルについて教えてください。」の質問画像

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    貴者のコードを元にマクロ:Macro1()
    を作成してコードを保存、マクロを実行しましたが
    エラー「コンパイルエラー:EndSubが必要です。」が出てしまい、実行できませんでした。
    解決方法を教えてください。
    このマクロはC2の日付が変更になったタイミングでマクロを実行すれば良いのでしょうか?
    重ねて教えてください。
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/03 10:18

A 回答 (1件)

Excelの数式を使って、この動作を実現することはできません。

マクロを使って、この機能を実装する必要があります。

以下は、この機能を実現するためのマクロの例です。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then ' C2が変更されたら
Dim dateValue As Date
dateValue = Target.Value ' C2の日付を取得

Dim lastDateValue As Date
lastDateValue = Range("E2").Value ' E2の日付を取得

If dateValue > lastDateValue Then ' C2の日付がE2の日付より未来の場合
Range("E3").Value = dateValue ' E3にC2の日付を設定
Range("E2").Value = lastDateValue ' E2に前回の日付を設定
End If
End If
End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。
シートモジュールに設定して上手くできました。

お礼日時:2023/03/03 13:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!