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

如何在Excel Power Query中为日期列添加指定工作日(跳过周末)

在Excel Power Query中计算添加指定工作日后的日期(跳过周六周日)

针对你需要基于date起始日期列和transit days工作日数列,计算跳过周六周日的目标日期的需求,这里提供直接可用的实现方案:

实现步骤

  1. 将数据导入Power Query编辑器,确认date列格式为日期类型,transit days列格式为数值类型。
  2. 点击「添加列」→「自定义列」,粘贴以下M语言代码:
= let
    StartDate = [date],
    WorkDaysNeeded = [transit days],
    // 递归函数:逐个日期检查,跳过周末
    AddWorkDay = (currentDate as date, remainingDays as number) as date =>
        if remainingDays = 0 then currentDate
        else
            let
                NextDate = Date.AddDays(currentDate, 1),
                // 周一为一周第0天,周六=5、周日=6,判断是否为周末
                IsWeekend = Date.DayOfWeek(NextDate, Day.Monday) >= 5
            in
                if IsWeekend then AddWorkDay(NextDate, remainingDays)
                else AddWorkDay(NextDate, remainingDays - 1)
in
    AddWorkDay(StartDate, WorkDaysNeeded)
  1. 重命名自定义列为Target Date,关闭并上载数据即可。

代码逻辑说明

  • 递归函数AddWorkDay从起始日期开始逐个往后推日期:
    • 若下一天是周六或周日,直接跳过继续推;
    • 若下一天是工作日,就减少剩余需添加的工作日数,直到剩余天数为0时返回当前日期。
  • 用Date.DayOfWeek(NextDate, Day.Monday)将周一设为一周起始日,周六、周日返回值分别为5和6,方便快速判断周末。

验证示例

对于起始日期2023年4月21日(周五),添加5个工作日:
21日(五)→22日(六,跳过)→23日(日,跳过)→24日(一,剩余4)→25日(二,剩余3)→26日(三,剩余2)→27日(四,剩余1)→28日(五,剩余0)
最终结果为2023年4月28日,符合预期。

注意事项

  • 若transit days存在0或负数,可在函数中添加判断逻辑,比如当WorkDaysNeeded <=0时直接返回StartDate;
  • 如需排除法定节假日,可扩展函数加入节假日列表进行额外判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:25