Power Query M中如何根据给定日期计算4周滚动周期的周序号
Power Query 4周滚动周期计算方案
前置说明
你现有日历表已包含符合规则的周序号列:从2019年1月1日起每自然7天为1周,周序号从1连续递加,2021/10/4-2021/10/10对应周序号145。
实现步骤
1. 新增「4周滚动周期内序号」列
打开Power Query编辑器,选中日历表,点击「添加列」→「自定义列」,输入以下公式:
if [周序号] < 145 then null else Number.Mod([周序号] - 145, 4) + 1
公式说明:周序号小于145时返回空值,你也可以根据需求替换为其他标记值;周序号≥145时通过取模运算生成1-4的循环序号,完全匹配你的规则要求。
验证示例:
- 周序号145:计算逻辑为
Number.Mod(0,4)+1=1,返回1 - 周序号158:计算逻辑为
Number.Mod(13,4)+1=2,返回2,和你给出的示例一致
2. 新增「对应任务」列
再次添加自定义列,输入以下公式直接映射任务:
if [4周滚动周期内序号] = null then null else {"A","B","C","D"}{[4周滚动周期内序号] - 1}
公式说明:Power Query列表索引从0开始,因此用滚动序号减1定位对应任务,1对应A、2对应B、3对应C、4对应D。
无周序号列时直接按日期计算方案
如果不想依赖现有周序号列,也可以直接基于日期列一次性算出对应任务,自定义列公式如下:
let 基准日期 = #date(2019,1,1), 间隔天数 = Duration.Days([日期] - 基准日期), 周序号 = Number.RoundDown(间隔天数 / 7, 0) + 1 in if 周序号 < 145 then null else {"A","B","C","D"}{Number.Mod(周序号 - 145, 4)}
内容的提问来源于stack exchange,提问作者Colin-G-Davidson
相关产品推荐
相关产品推荐

