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

Power Query日期列筛选:非周一筛昨日,周一则筛上周五

Power Query 工作日最新数据筛选实现方案

直接按动态计算目标筛选日期+列匹配的逻辑实现即可,全程不需要复杂配置,步骤如下:

  • 第一步:计算动态目标日期
    打开Power Query编辑器,在原表查询的基础上新增自定义步骤,核心判断逻辑完全匹配规则:当日为周一取上周五,非周一取前一日,计算逻辑不会带出周末日期值。对应M公式如下:
    目标日期 = let 今日 = DateTime.Date(DateTime.LocalNow()) in if Date.DayOfWeek(今日, Day.Monday) = 0 then Date.AddDays(今日, -3) else Date.AddDays(今日, -1)
    公式说明:Date.DayOfWeek(今日, Day.Monday)指定周一为每周起始日,返回值为0时代表当日是周一,此时向前推3天即为上周五;其余场景向前推1天即为昨日,周二到周五运行时取到的都是前一个工作日,不会混入周末日期。
  • 第二步:对日期列做等值筛选
    你可以先手动给日期列选一个任意固定日期做筛选,再把编辑栏里筛选公式的固定日期值替换成上一步定义的目标日期变量即可,不用手动写全量筛选公式,能避免语法错误。

注意事项:请提前把日期列的格式统一设置为纯日期类型,如果列值带时分秒,先用Date.From([你的日期列名])提取纯日期部分再做匹配,否则会因为时间部分不一致导致筛选结果为空。

如果需要直接套用全量M代码,可以把下面片段里的原表名、日期列名替换成你自己的实际字段名即可:

let
    源 = Excel.CurrentWorkbook(){[Name="你的原表名"]}[Content],
    改日期列类型 = Table.TransformColumnTypes(源,{{"你的日期列名", type date}}),
    计算目标筛选日期 = let 今日 = DateTime.Date(DateTime.LocalNow()) in if Date.DayOfWeek(今日, Day.Monday) = 0 then Date.AddDays(今日, -3) else Date.AddDays(今日, -1),
    筛选最终数据 = Table.SelectRows(改日期列类型, each [你的日期列名] = 计算目标筛选日期)
in
    筛选最终数据

如果你的查询存在周末自动运行的场景,可以给日期判断加两层分支:当日为周六时向前推1天取周五,当日为周日时向前推2天取周五,就能保证无论周几运行,取到的都是最近一个工作日的最新数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:01:14