Excel Power Query:如何一步为多列批量添加数值
批量为多列添加数值的Power Query解决方案
为什么选中多列时「标准添加」功能会变灰?
这是Power Query的设计限制:「转换」选项卡下的「标准添加」功能仅支持单列操作,当选中多列时该功能会自动禁用,并非操作错误。
方案1:所有目标列添加相同数值
如果需要给指定的多列(比如所有数值列)添加同一个值,可以通过Table.TransformColumns批量处理,只需1个步骤:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Full Name", type text}, {"1979", Int64.Type}, {"1990", Int64.Type}, {"1997", Int64.Type}, {"2007", Int64.Type}, {"2010", Int64.Type}}), #批量添加相同值 = Table.TransformColumns(#"Changed Type", List.Transform(List.RemoveMatchingItems(Table.ColumnNames(#"Changed Type"), {"Full Name"}), each {_, (value) => value + 5, type number}) ) in #批量添加相同值
说明:
List.RemoveMatchingItems用来排除不需要处理的列(比如这里的「Full Name」文本列)List.Transform自动生成所有目标列的处理规则,统一添加数值5
方案2:不同列添加不同数值
如果每列需要添加的数值不同,可以直接在Table.TransformColumns中一次性定义所有列的处理规则,合并原来的多个步骤为1个:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Full Name", type text}, {"1979", Int64.Type}, {"1990", Int64.Type}, {"1997", Int64.Type}, {"2007", Int64.Type}, {"2010", Int64.Type}}), #批量添加不同值 = Table.TransformColumns(#"Changed Type", { {"1979", each _ + 5, type number}, {"1990", each _ + 10, type number}, {"1997", each _ + 20, type number}, {"2007", each _ + 15, type number}, {"2010", each _ + 30, type number} }) in #批量添加不同值
操作步骤:
- 打开Power Query编辑器,点击「高级编辑器」
- 删除原来的多个
Added to Column步骤 - 替换为上述的
#批量添加不同值步骤即可
进阶:用参数表管理增量值(适合大量列)
如果有30+列且数值经常变动,可以创建一个单独的参数表(比如包含「列名」和「增量值」两列),然后通过动态生成处理规则实现批量操作:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Full Name", type text}, {"1979", Int64.Type}, {"1990", Int64.Type}, {"1997", Int64.Type}, {"2007", Int64.Type}, {"2010", Int64.Type}}), #加载参数表 = Excel.CurrentWorkbook(){[Name="增量参数表"]}[Content], #生成处理规则 = Table.ToRecords(#加载参数表), #批量处理 = Table.TransformColumns(#"Changed Type", List.Transform(#生成处理规则, each {_[列名], (value) => value + [增量值], type number}) ) in #批量处理
这样后续只需修改参数表的数值,无需改动M代码,维护更高效。
内容的提问来源于stack exchange,提问作者Mayukh Bhattacharya
相关产品推荐
相关产品推荐

