You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery如何基于已关联表新建计算列 计算含节假日的6工作日后到货日期

PowerQuery 计算排除周末/法定节假日的到货日期实现步骤

首先确认3张表的基础配置符合要求:

  • 日历表(建议命名为日历表)包含连续无中断的日期列(列名日期),以及标识是否为周末的布尔列(列名IsWeekend,周末取值true,工作日取值false)
  • 国家法定节假日表(建议命名为法定节假日表)包含所有法定节假日的日期列(列名节假日日期)
  • ORDER表(建议命名为订单表)包含发货日期列,且你已完成3张表的关联配置

具体操作步骤

  1. 首先生成全局可调用的有效工作日列表
    在PowerQuery中新建空查询,命名为工作日列表,输入以下M代码:
let
    // 关联法定节假日表,排除节假日日期
    关联节假日 = Table.NestedJoin(日历表, {"日期"}, 法定节假日表, {"节假日日期"}, "节假日匹配", JoinKind.LeftOuter),
    排除节假日 = Table.SelectRows(关联节假日, each Table.IsEmpty([节假日匹配])),
    // 排除周末日期
    排除周末 = Table.SelectRows(排除节假日, each [IsWeekend] = false),
    // 提取有效日期转为有序列表
    有效工作日列表 = List.Sort(Table.Column(排除周末, "日期"))
in
    有效工作日列表
  1. 给订单表添加到货日期计算列
    在PowerQuery编辑器中打开订单表,点击「添加列」-「自定义列」,输入以下公式:
let
    发货日 = [发货日期],
    // 筛选所有晚于等于发货日的有效工作日
    可选日期 = List.Select(工作日列表, each _ >= 发货日),
    // 取往后第6个工作日(索引从0开始计数)
    到货日期 = 可选日期{6}
in
    到货日期

注:如果要求发货日当天计入第一个工作日,把索引值调整为{5}即可。

  1. 把新增的自定义列格式设置为日期格式,加载回数据模型即可使用。

示例验证

发货日期为2021年1月1日的场景:
2021/1/1为元旦法定节假日,有效工作日从1月4日(周一)开始计数,数6个工作日为1月11日,最终到货日期返回11/01/2021,和需求示例一致。

内容的提问来源于stack exchange,提问作者YLE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:06:03