查看日期是否在同一日历周或之前的日历周
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 函数正在为您计算。
我回答了一个关于测试日期与参考日期相比是否在同一周、前一周甚至更早的一周的问题。
在这种情况下,问题是关于测试较早日期是否比参考日期早 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 函数正在为您计算。