跨年度月内周数序列异常:Excel公式修改方案咨询
解决跨年度时每月重置周数的公式修改方案
原公式依赖将每月日期映射到当年1月的对应日期计算周数,这种逻辑在跨年度时会混淆年度周数与月度周数的计算规则,导致结果失效。以下是修正后的公式,可实现每月首个周一到来时重置周数为1,且跨年度正常运行:
修正公式
=INT(([@dates] - (DATE(YEAR([@dates]), MONTH([@dates]), 1) + (7 - WEEKDAY(DATE(YEAR([@dates]), MONTH([@dates]), 1), 3)) % 7)) / 7) + 1
公式逻辑说明
- 定位当月第一个周一
先用DATE(YEAR([@dates]), MONTH([@dates]), 1)获取当前日期所在月份的第一天,再通过WEEKDAY(..., 3)(周一为0、周日为6的规则)计算出到当月首个周一的偏移天数,两者相加得到当月第一个周一的准确日期。 - 计算月度相对周数
用当前日期减去当月第一个周一的日期得到间隔天数,将间隔天数除以7取整后加1,即可得到当前日期在当月的周数——首个周一周数为1,之前的日期会返回0,代表属于上个月的周数,完全匹配原方案“首个周一到来时重置周数”的需求。
可选调整:当月全日期从第1周起算
如果希望当月所有日期都从第1周开始计算(无需区分首个周一前后),可使用以下变体公式:
=MAX(1, INT(([@dates] - (DATE(YEAR([@dates]), MONTH([@dates]), 1) + (7 - WEEKDAY(DATE(YEAR([@dates]), MONTH([@dates]), 1), 3)) % 7)) / 7) + 1)
内容的提问来源于stack exchange,提问作者Ami Khan
相关产品推荐
相关产品推荐

