【问题标题】:Generate start date, end date and week numbers belong to given start and end date生成开始日期、结束日期和周数属于给定的开始和结束日期
【发布时间】:2020-04-17 01:58:27
【问题描述】:

我想通过给出一些日期范围来生成特定周的无列表和开始日期和结束日期,我使用下面的公式做了。但我想将属于第 52 周之后的所有日期视为第 1 周。我的公式运行良好如果开始日期和结束日期属于同一年。但是如果我选择 12 月 26 日之后的开始日期,就像我的公式不起作用。请帮助。我考虑周一到周日。如果我选​​择 dec29,它显示不正确的数据(红色突出显示) A1-开始日期(这是由日历选择器提供的) B1-结束日期((这是由日历选择器提供的)

A3 =IF(A1="","",YEAR(A1))

B3 =IF($A$1-WEEKDAY($A$1,3) +((ROW()-3)*7) <= $B$1-WEEKDAY($B$1,3), ISOWEEKNUM($A$1-WEEKDAY($A$1,3)+((ROW()-3)*7)), "")

C3 =IF(DATE(YEAR(B1),MONTH(B1),DAY(B1))>=DATE(YEAR(A1),MONTH(A1),DAY(A1)),IF(A1<>"",A1,""),"CHECK DATE RANGE")

D3=IF(DATE(YEAR(B1),MONTH(B1),DAY(B1))>=DATE(YEAR(A1),MONTH(A1),DAY(A1)),IF(B1<>"",MIN(DATE(A3+1,1,2),(DATE(A3,1,1)-WEEKDAY(DATE(A3,1,1),2)+B3*7)),""),"CHECK DATE RANGE")

我想要如下结果

【问题讨论】:

  • 您可以在单元格B3 中使用公式=WEEKNUM($A$1) 吗?
  • 显示第 53 周。

标签: excel excel-formula


【解决方案1】:

这些公式适用于第 3 行:

A3  =IF(ISNUMBER($A$1),YEAR(A1),"")
B3  =IF(ISNUMBER($A$1),WEEKNUM($A$1,2),"")
C3  =IF(ISNUMBER($A$1),$A$1-WEEKDAY($A$1,2)+1,"")
D3  =IF(ISNUMBER($A$1),$A$1+6-WEEKDAY($A$1,2)+1,"")

从第 4 行开始,输入这些公式,然后使用自动填充光标(选择单元格 A4:D4,然后单击并按住选择框的右下角图标)向下复制填充尽可能多的行根据需要。

A4  =IF(ISNUMBER($D3),IF(($D3+1)<$B$1,YEAR($D3),""),"")
B4  =IF(ISNUMBER($D3),IF(($D3+1)<$B$1,WEEKNUM($D3,2),""),"")
C4  =IF(ISNUMBER($D3), IF( ($D3+1)<$B$1,  $D3+1,""),"")
D4  =IF(ISNUMBER($C4),$C4+6,"")

顺便说一句,您在帖子中提到您希望星期一作为一周的开始。所以我在WEEKNUMWEEKDAY 中都使用了值2。如果需要,请在其他日子使用 different value

【讨论】: