如何使用Power Query删除单行内重复值并移除空白单元格
Power Query 实现行内去重并移除空白值的方法
操作步骤
- 将原始数据导入Power Query编辑器
- 添加自定义列,输入公式:
List.Distinct(List.RemoveNulls(Record.ToList(Record.RemoveFields(_, "Wire"))))
公式逻辑:先排除标识行的Wire列,把当前行所有Point列的值转成列表,先删空值再去重,效果和Excel的UNIQUE函数完全一致 - 选中自定义列,点击列标题右侧的扩展按钮,选择将列表拆分为多列
- 删除原本的Point1~Point6旧列,将新生成的列重命名为Point1、Point2、Point3即可得到目标结果
可直接复用的通用M代码
你可以直接把以下代码粘贴到Power Query的高级编辑器中,将源数据的表名替换成你自己的表名即可直接运行,点位列数量变动也无需手动调整取值逻辑:
let 源 = Excel.CurrentWorkbook(){[Name="你的原始表名"]}[Content], 提取所有点位列名 = List.RemoveMatchingItems(Table.ColumnNames(源), {"Wire"}), 生成去重后点位列表 = Table.AddColumn(源, "临时列表", each List.Distinct(List.RemoveNulls(Record.FieldValues(Record.SelectFields(_, 提取所有点位列名))))), 仅保留需要的列 = Table.SelectColumns(生成去重后点位列表, {"Wire", "临时列表"}), 拆分列表为正式列 = Table.SplitColumn(仅保留需要的列, "临时列表", Splitter.SplitByNothing(), {"Point1", "Point2", "Point3"}), 空白值替换为空文本 = Table.ReplaceValue(拆分列表为正式列, null, "", Replacer.ReplaceValue, {"Point1", "Point2", "Point3"}) in 空白值替换为空文本
如果后续需要输出更多点位列,只需要修改拆分列表为正式列步骤里的列名列表即可。
内容的提问来源于stack exchange,提问作者Ryouko
相关产品推荐
相关产品推荐

