我正在尝试编写一个公式,以便生成下面的“目标:状态”列:
File Date Frequency Lag Expected Date Today's Date Goal: Status Current Formula
10/31/2020 1 15 12/15/2020 11/20/2020 Green Green
9/30/2020 3 5 1/4/2021 11/20/2020 Green Green
6/30/2020 3 15 9/15/2020 11/20/2020 Red Red
9/30/2020 1 20 10/19/2020 11/20/2020 Yellow Green
9/30/2020 1 30 11/30/2019 11/20/2020 Green Green
9/30/2020 1 10 11/10/2019 11/20/2020 Yellow Green
总体逻辑如下:
- 如果频率为 3 且文件日期与上一季度末相同,则为绿色。
- 如果频率为 1,且文件日期与上个月底相同,则为绿色。
- 如果文件日期不是上个月或季度末的日期,请使用预期日期(文件日期 + 频率 + 滞后)查看今天的日期是否早于该日期。如果是,则为绿色,因为我们预计下一个文件要等到预期日期过去后才会出现。
- 如果文件日期不是上个月或季度末的日期,或者预计日期与今天的日期相比已经过去两个月或更长时间,则为红色。
- 如果文件日期不是上个月或季度末的日期,或者预计日期与今天的日期相比已过去少于两个月或两个月以上,则为黄色。
逐行逻辑:
- 频率为 1,文件日期为 2020/10/31 - 绿色
- 频率为 3,文件日期为 2020 年 9 月 30 日 - 绿色
- 文件日期与上个月末或季度末不同,根据下一个文件的频率,预计日期为 2020 年 9 月 15 日。距离今天的日期已超过两个月,所以是红色的。
- 频率为 1,文件日期不是上个月末,预计日期距今天日期不到两个月,因此为黄色
- 频率为 1,但文件日期为 2020 年 9 月 30 日,但预期日期晚于今天的日期,早于预期日期,因此为绿色。
- 频率为 1,但文件日期为 2020 年 9 月 30 日,预计日期比今天的日期早不到两个月,因此为黄色。
我当前的公式考虑了最新月份和季度末,但没有考虑频率,因此它只适用于前两行:
=IF(A2=DATE(IF(AND(MONTH(TODAY())>=1,MONTH(TODAY())<4),YEAR(TODAY())-1,YEAR(TODAY())),IF(AND(MONTH(TODAY())>=1,MONTH(TODAY())<4),12,IF(AND(MONTH(TODAY())>=4,MONTH(TODAY()*2)<7),3,IF(AND(MONTH(TODAY())>=7,MONTH(TODAY())<10),6,9))),IF(AND(MONTH(TODAY())>=1,MONTH(TODAY())<7),31,30)),"Green",IF(A2=(EOMONTH(TODAY(),-1)),"Green","Red"))
答案1
也许这会有所帮助。上个月底:
=EOMONTH(TODAY(),-1)
上季度末:
=EOMONTH(TODAY(),-MOD(MONTH(TODAY())-1,3) -1)
*通过确定当前第 1、2 或 3 季度的月份数并使用 EOMONTH 从当前日期中扣除该月份数来工作。例如,7 月是扣除 1 个月的月份,8 月是扣除 2 个月的月份,以追溯至 6 月底。
您可以使用公式 > 定义名称将这两个公式定义为名称“lastmonth”和“lastquarter”
现在您可以直接进行日期 IF 比较:
=IF(Frequency = 3, IF(date = lastquarter, "green", else...), IF(Frequency = 1, IF(date = lastmonth, "green", else...)
或更紧凑
=IF(date = IF(Frequency = 1, lastmonth, lastquarter), "green", IF(today < expected date, "green", today < EDATE(expected date,2), "yellow", "red")