查看日期是否在同一日历周或之前的日历周

See if a date is in same or previous calendar week

我回答了一个关于测试日期与参考日期相比是否在同一周、前一周甚至更早的一周的问题。

在这种情况下,问题是关于测试较早日期是否比参考日期早 5 个、10 个或 10 个或更多个工作日,并参考了之前关于测试的问题是否较早的日期是参考日期之前少于 7 天、少于 14 天或 14 天或更多天。

我想尝试回答给定日期是否在同一 'calendar week'(星期日到星期六),或者在之前的 'calendar week',或者在更早的日历周中的相关问题.

我的第一个想法是使用 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 周)。因此,上面的公式似乎可以通过将 YEAR(A2) * 52(或可能是 53)添加到 WEEKNUM 来适应跨年边界的工作。

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

上一个这样的闰年是 2000 年,下一个是 2028 年。

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

参考日期是2001年1月10日

我会尝试 post 稍后回答。

对于您的场景,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 之间的任何数字以开始新的一天无论您需要什么,本周最佳

已将 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 函数正在为您计算。