如何将Excel的COUNTIFS条件判断公式转换为Power Query新列?
在Power Query中实现Excel COUNTIFS+IF的等效逻辑
分步高效方案(适合大数据量)
- 导入数据:把目标Excel表格导入Power Query(点击「数据」选项卡→「从表格/区域」)。
- 分组判断每组是否存在C="Y":
- 切换到「转换」选项卡,点击「分组依据」。
- 分组依据选
B列,新列名设为Has_Y,操作类型选「自定义」,输入公式:
这一步会生成新查询,每个B值对应一个布尔值,标记该组是否有C列为"Y"的行。List.Contains([C], "Y")
- 合并分组结果回原表:
- 切回原数据查询(编辑器左侧查询列表选原表)。
- 点击「转换」→「合并查询」→「合并查询作为新列」。
- 选择刚才分组得到的查询作为合并对象,匹配列选
B列,合并类型选「左外部」。 - 展开合并后的列,只保留
Has_Y列。
- 生成最终结果列:
点击「添加列」→「自定义列」,输入公式:
最后可以删掉中间的if [Has_Y] then "Y" else "N"Has_Y列,只留结果列。
一步到位方案(适合小数据量)
如果数据量不大,直接用自定义列一步搞定,无需分组合并:
- 点击「添加列」→「自定义列」,输入公式(注意把
#"之前的步骤名"换成编辑器右侧「应用步骤」里实际的上一步名称):
这个公式会对每一行筛选出同B值的所有行,检查这些行的C列是否包含"Y",直接返回结果。if List.Contains(Table.SelectRows(#"之前的步骤名", (x)=>x[B]=[B])[C], "Y") then "Y" else "N"
提示
- 大数据优先选第一种分组方案,运行效率更高;小数据用第二种更省事。
- 确保B、C列是文本类型,避免因数据类型不匹配导致判断错误。
内容的提问来源于stack exchange,提问作者BD12
相关产品推荐
相关产品推荐

