示例需求:省份清单中“自治区”名称过长,在做报表展示时效果不理想,希望将其替换为简称,例如:内蒙古自治区替换为“内蒙古”。这个直接使用Excel中的替换也可以实现,毕竟只有5个自治区需要替换,接下来看看Power Query中如何实现。
单击选中数据表中任意单元格,例如A6,依次单击【数据】>【自表格/区域】,打开Power Query编辑器。
依次单击【转换】>【替换值】,在【替换值】对话框中输入【要查找的值】和【替换为】,单击【确定】按钮完成替换。
使用类似操作依次替换其他几个自治区,PQ M代码如下:
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"省份", type text}}),
替换的值 = Table.ReplaceValue(更改的类型,"内蒙古自治区","内蒙古",Replacer.ReplaceText,{"省份"}),
替换的值1 = Table.ReplaceValue(替换的值,"宁夏回族自治区","宁夏",Replacer.ReplaceText,{"省份"}),
替换的值2 = Table.ReplaceValue(替换的值1,"新疆维吾尔自治区","新疆",Replacer.ReplaceText,{"省份"}),
替换的值3 = Table.ReplaceValue(替换的值2,"广西壮族自治区","广西",Replacer.ReplaceText,{"省份"}),
替换的值4 = Table.ReplaceValue(替换的值3,"西藏自治区","西藏",Replacer.ReplaceText,{"省份"})
in
替换的值4
替换后的结果如下,单击【关闭并上载】按钮将数据加载到工作表中。
M代码如下:
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"省份", type text}}),
替换的值 = Table.ReplaceValue(更改的类型,"内蒙古自治区","内蒙古",Replacer.ReplaceText,{"省份"}),
替换的值1 = Table.ReplaceValue(替换的值,"宁夏回族自治区","宁夏",Replacer.ReplaceText,{"省份"}),
替换的值2 = Table.ReplaceValue(替换的值1,"新疆维吾尔自治区","新疆",Replacer.ReplaceText,{"省份"}),
替换的值3 = Table.ReplaceValue(替换的值2,"广西壮族自治区","广西",Replacer.ReplaceText,{"省份"}),
替换的值4 = Table.ReplaceValue(替换的值3,"西藏自治区","西藏",Replacer.ReplaceText,{"省份"})
in
替换的值4
这个操作和Excel中直接替换似乎区别也不大,同样也是要操作多次,但是其优势在于,创建PQ清洗步骤是一次性操作,今后数据中的省份都可以直接清洗完成,然而如果想在Excel中实现自动替换,那么将需要借助VBA才能实现。
Power Query也由其他的简洁实现方式,再接下来几篇博文中进行讲解。