咨询:将检测上下行两列组合重复的Excel公式转Power Query
实现Excel重复检查逻辑的Power Query方案
核心思路
Power Query中通过索引列定位上下行,结合自定义列判断当前行的Person+Month组合是否与上一行/下一行重复,替代Excel的单元格引用逻辑。
分步实现步骤
假设你的数据源表名为Source,包含Person(原A列)和Month(原C列):
添加索引列
给表添加从0开始的索引,用于精准定位上下行:= Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type)创建组合列(可选但推荐)
提前将Person和Month合并为单一列,避免重复拼接操作:= Table.AddColumn(添加索引的表, "PersonMonth", each [Person] & [Month])注:如果
Person或Month是数值类型,需先转文本再拼接,比如Text.From([Person]) & Text.From([Month])添加重复判断列
通过自定义列实现逻辑判断,同时处理首尾行的边界情况(首行无上行、末行无下行):= Table.AddColumn(添加组合列的表, "DuplicateCheck", each let currentCombo = [PersonMonth], totalRows = Table.RowCount(添加组合列的表), // 首行无上行,返回空字符串(不会触发匹配) prevCombo = if [Index] > 0 then 添加组合列的表{[Index]-1}[PersonMonth] else "", // 末行无下行,返回空字符串(不会触发匹配) nextCombo = if [Index] < totalRows - 1 then 添加组合列的表{[Index]+1}[PersonMonth] else "" in if currentCombo = prevCombo or currentCombo = nextCombo then "Duplicate" else 0 )清理冗余列(可选)
若不需要索引列和组合列,可直接移除:= Table.RemoveColumns(添加判断列的表, {"Index", "PersonMonth"})
关键细节说明
- 用
Table.RowCount动态获取总行数,避免硬编码行数导致的错误 - 边界行通过
if判断返回空字符串,确保不会误判为重复 - 所有操作均在Power Query编辑器中完成,可通过「高级编辑器」直接粘贴上述代码片段
内容的提问来源于stack exchange,提问作者3y3s
相关产品推荐
相关产品推荐

