=TODAY
date A date B date C
日付 B を計算する数式が必要です。
つまり、日付 A と =TODAY の間に 1 年以上経過し、日付 C が空の場合、日付 B は =TODAY と同じになり、それ以外の場合は日付は日付 A に 1 年を加えた日付と同じになります。
次のような式を作成できました:
=IF(AND(DATEDIF(date A,$date $B,"Y") >= 1, ISBLANK(date C)), TODAY(), DATE(YEAR(date A)+1,MONTH(date A),DAY(date A)))
しかし、日付 A と今日の差が 1 年以上ある場合は、この方法は機能しないようです。
答え1
注: 私は英国にいるので、回答では日付をdd/mm/yyyyの形式で使用します。
例えば、
date a
はセル にあり、A1
date b
はセル にありB1
、 は
date c
セル にあるとします。C1
次に、31/02/2015
セルに入力してA1
、=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,ISBLANK(C1)),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))
セルに数式を入力するA2
と、数式が機能します。
@Máté Juhász がコメントで述べたように、問題はセルに何かがある場合に発生しますC1
。その場合、A1 の日付に 1 年が追加され、今日の日付である 2016 年 2 月 9 日ではなく、2016 年 2 月 31 日になります。
セルC1
にスペースを入れると空白のように見えますが、Excel ではそのスペースをデータとして認識します。安全のため、スペースを空白として含めることでセルが人間に空白として見えるかどうかを確認したい場合は、論理テストを変更して=OR(ISBLANK(C1),C1=" ")
セルの最終数式をB1
次のようにする必要があります。=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(ISBLANK(C1),C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))
の代替案は=OR(ISBLANK(C1),C1=" ")
、数式の長さを6文字短くすること以外に機能的な違いはありませんが、コメントで提案されている代替案を使用することです。これは、=OR(C1="",C1=" ")
セル内の代替最終数式をB1
次のように作成します。=IF(AND(DATEDIF(A1,TODAY(),"Y")>=1,OR(C1="",C1=" ")),TODAY(),DATE(YEAR(A1)+1,MONTH(A1),DAY(A1)))