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

如何在Power Query中实现含日期+7天条件的COUNTIFS功能?

在Power Query中实现Excel COUNTIFS的分组日期判断功能

你需要实现的是按Lookup2分组,判断当前行日期加7天的记录是否在同组中存在,返回1或0(对应Excel里的COUNTIFS(Table1_1[Lookup2],Table1_1[@Lookup2],Table1_1[Date],Table1_1[@Date]+7)功能),以下是两种实用的实现方法:

方法一:添加自定义列直接判断(适合小数据量)

在Power Query编辑器中,选中你的数据表,执行以下步骤:

  1. 点击添加列选项卡 → 自定义列
  2. 在弹出的公式编辑器中输入以下代码(将#"你的表名"替换为当前表的实际名称):
if List.Contains(
    Table.SelectRows(#"你的表名", each [Lookup2] = [@Lookup2])[Date],
    [@Date] + #duration(7, 0, 0, 0)
) then 1 else 0
  1. 点击确定,将新列重命名为Result

代码说明:

  • Table.SelectRows(#"你的表名", each [Lookup2] = [@Lookup2]):筛选出与当前行Lookup2值相同的所有行
  • [Date]:提取筛选结果中的日期列,形成日期列表
  • List.Contains(..., [@Date] + #duration(7, 0, 0, 0)):判断当前日期加7天(用#duration定义7天时长)是否在上述列表中,是则返回1,否则返回0

方法二:合并查询实现(适合大数据量,性能更优)

当数据量较大时,方法一的逐行筛选效率较低,可通过合并自身查询实现:

  1. 在Power Query编辑器左侧的查询面板中,右键点击你的数据表 → 复制,将复制后的查询重命名为Table_DatePlus7
  2. 打开Table_DatePlus7,点击添加列 → 自定义列,输入公式:
[Date] + #duration(7, 0, 0, 0)

将该列重命名为MatchedDate,然后删除除Lookup2和MatchedDate之外的所有列
3. 回到原数据表,点击合并查询 → 合并查询作为新列:

  • 左表选择原数据表,右表选择Table_DatePlus7
  • 设置匹配条件:
    • 第一组:原表的Lookup2 = Table_DatePlus7的Lookup2
    • 第二组:原表的Date = Table_DatePlus7的MatchedDate
  • 合并类型选择左外部
  1. 添加新的自定义列,判断合并列是否有匹配结果:
if [合并的列] <> null then 1 else 0
  1. 将该列重命名为Result,删除中间的合并列即可

注意事项

确保你的Date列是日期/时间类型,若为文本类型需先通过转换选项卡 → 数据类型 → 日期进行转换,避免判断出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:50:20