Power Query中筛选指定Job ID对应Type=C之后至目标日期数据的方法
Power Query 完成需求的后续操作步骤
1. 添加日期辅助列
为了方便时间先后的比较,先给表格新增一个Date列:
- 点击「添加列」→「自定义列」,输入公式:
将年份和月份转换为当月第一天的日期格式,便于后续判断时间顺序。#date([Year], [Month], 1)
2. 标记每个Job ID的最晚Type=C时间点
针对每个Job ID,找出它所有行里Type=C的最晚日期:
- 再添加一个自定义列(命名为
TypeC_Latest),输入公式:
注:把公式里的「你的原始表名」替换为实际的原始数据表名称。如果某个Job ID没有Type=C的行,该列会显示List.Max(Table.SelectRows(你的原始表名, (row) => row[Job ID] = [Job ID] and row[Type] = "C")[Date])null,后续筛选逻辑会自动跳过这类行的额外判断。
3. 筛选符合要求的行
现在需要保留两类行:
- 第一类:2024年3月的目标行(即你最初筛选出的那批条目);
- 第二类:当前行的日期晚于对应Job ID的最晚Type=C日期,且本身不是Type=C的行。
操作步骤:
- 点击「开始」→「筛选行」→「自定义筛选」,输入筛选逻辑:
([Year] = 2024 and [Month] = 3) or ([Date] > [TypeC_Latest] and [Type] <> "C")
4. 清理冗余列
最后删除之前添加的Date和TypeC_Latest两个辅助列,只保留Job ID、Year、Month、Value、Type这些需要的列即可。
内容的提问来源于stack exchange,提问作者andy Kemp
相关产品推荐
相关产品推荐

