特定の日付が過ぎた後に、その日付に 1 か月を追加するにはどうすればよいですか?

特定の日付が過ぎた後に、その日付に 1 か月を追加するにはどうすればよいですか?

現在の期日をリストした Excel シートがあります。期日は毎月同じ日 (9/2、10/2 など) で、古い日付が過ぎると期日が更新されるようにしたいので、手動で更新したり、各月ごとに列を用意したりする必要はありません。これを行う数式があるはずですが、うまくいきません。

写真の式は私が現在使用しているもので、なぜ機能しないのかはわかりません。ただし、12 月の期限が過ぎると、これも問題になると思います。何かアイデアはありますか?

VBA 以外のソリューションを探しています。

期日スプレッドシート

答え1

幸運なことに、VBA は必要ありません。実際、IF テストを必要としないさらにシンプルなアプローチがあります。

=DATE(YEAR(NOW()),MONTH(NOW())+(DAY(NOW())>2),2)

質問に基づいて月の 2 日をハードコードしましたが、セルから取得したり、元の期日から抽出したりすることもできます。

月の目標日を過ぎたかどうかをテストするのではなく、TRUE と FALSE がそれぞれ 1 と 0 として扱われるという事実を利用します。 は true または false のいずれかになるため、月の 2 日目を超えた場合、または超えていない場合の(DAY(NOW())>2)ように扱われます。その日を過ぎた場合は、その月に追加されます。101

Excel は、12 月にこのことが発生した場合、月「13」を適切に処理します。翌年の 1 月に進みます。

関連情報