我正在尝试将周数分配给 2022 年至 2024 年之间的日期,以满足以下要求:
例如,2022 年 1 月 1 日是星期六,因此应指定为 52(2021 年第 52 周)。 2022 年 1 月 2 日是星期日,因此应指定为 1(2022 年的第 1 周)。同样,2022 年 12 月 31 日是星期六,所以应该是 52,2023 年 1 月 1 日是星期日,所以应该是 1。
我尝试了下面的代码,它指定 2022 年 1 月 1 日为第 52 周,2022 年 1 月 2 日为第 1 周,但 2023 年 1 月 1 日为第 53 周,尽管它应该是第 1 周(假设日期列位于单元格 A 中。我的日期的格式是 yyyy-mm-dd)。
if(a1<date(year(a1),1,1)+(8-weekday(date(year(a1),1,1),1)), weeknum(date(year(a1),1,1)-weekday(date(year(a1),1,1),1)+1,1),weeknum(a1-weekday(a1,1),1))
避免递归,这是(也许是粗略的)方法:
动态公式,Excel 2021 及更高版本
=LET(
start_date, "2022-1-1",
end_date, "2025-1-1",
num_days, DAYS(end_date, start_date),
dates, SEQUENCE(num_days, , start_date),
years_starting_on_sunday, {1978, 1989, 1995, 2006, 2017, 2023, 2034},
sunny_weeknum, IFS(
ISNUMBER(XMATCH(YEAR(dates), years_starting_on_sunday)),
WEEKNUM(dates),
WEEKNUM(dates) = 1,
IF(
ISNUMBER(XMATCH(YEAR(dates) - 1, years_starting_on_sunday)),
53,
52
),
TRUE,
WEEKNUM(dates) - 1
),
HSTACK(dates, sunny_weeknum)
)