查看日期是在同一日历周还是上一日历周

时间:2015-09-21 18:30:42

标签: excel date calendar excel-formula

我回答了一个关于测试的问题,以确定日期是否与参考日期相同,之前或甚至更早。

在这种情况下,问题是关于测试早期日期是否小于参考日期之前的5个,少于10个或10个或更多个工作日,并提到之前关于测试的问题以查看更早的日期在参考日期之前不到7天,少于14天,或14天或更多天。

我想尝试回答相关的问题,即某个特定日期是在同一个“日历周”(周日到周六),还是在之前的“日历周”,或者是在较早的日历周。

我的第一个想法是使用WEEKNUM函数,所以如果参考日期是TODAY(),那么这将是

=IF(WEEKNUM(TODAY())-WEEKNUM(A2)>1,"Old",IF(WEEKNUM(TODAY())-WEEKNUM(A2)>0,"Last week","This week"))

然而,这不适用于年度边界,因为WEEKNUM每个新年都从1开始。

在正常年份,WEEKNUM从1到53(因为一年中只有52周)。因此,看起来上述公式可以通过将年份(A2)* 52(或可能是53)添加到WEEKNUM来适应跨年度工作。

然而,考虑一个闰年,从周六开始,到周日结束。在这种情况下,WEEKNUM从1到54运行。

最后一次闰年是2000年,下一次是2028年。

我不清楚它是否适用于所有情况。

参考日期是2001年1月10日。

enter image description here

稍后我会尝试发布一个答案。

2 个答案:

答案 0 :(得分:0)

对于您的方案,WEEKDAY是您的朋友,它还允许您定义一周的开始日期。

使用公式部分(TODAY()-WEEKDAY(TODAY(),11)A2-WEEKDAY(A2,11),我们可以测试值是否相等(=当前周)或更早:

=IF((TODAY()-WEEKDAY(TODAY(),11))=(A2-WEEKDAY(A2,11)),"This Week",IF((TODAY()-WEEKDAY(today(),11)-7)=(A2-WEEKDAY(A2,11)),"Last Week","Old"))

您还可以修改比较以提供适当的周数,而不是针对IF嵌套限制运行:

=((TODAY()-WEEKDAY(TODAY(),11))-(A2-WEEKDAY(A2,11)))/7 & " Week(s) old"

幻数在本周开始时更改是工作日功能中的11 - 更改为11到17之间的任意数字,无论您身在何处,都可以开始您的星期几需要它

答案 1 :(得分:0)

已经接受了SeanC的答案作为一个好的答案,很好,它可以扩展到两个日期之间有多少个日历周的更一般的问题。

我将回到第一原则并提出以下建议(从星期日开始的一周)

=IF(INT((TODAY()-1)/7)-INT((A2-1)/7)>1,"Old",IF(INT((TODAY()-1)/7)-INT((A2-1)/7)>0,"Last week","This week"))

或从星期一开始的一周

=IF(INT((TODAY()-2)/7)-INT((A2-2)/7)>1,"Old",IF(INT((TODAY()-2)/7)-INT((A2-2)/7)>0,"Last week","This week"))

它起作用,因为日期从1900年1月1日星期日开始,表示为数字1。

但另一个答案更具可读性 - WEEKDAY函数正在为你做算术。