Excel Power Query 如何仅在指定列存在时执行删除操作避免报错
问题描述
- 已新增计算列
Custom,计算公式为Column2 + Column3 - Column4,完成计算后需删除除Custom外的所有其他列 - 数据集有时不存在
Column4列,已通过try otherwise语法保证Custom列计算逻辑正常,原有示例代码如下:
#"Added Custom" = Table.AddColumn(#"Previous Step", "Custom", each [Column2]+[Column3]- (try [Column4] otherwise 0)), #"Removed Columns7" = Table.RemoveColumns(#"Added Custom",{"Column2", "Column3", "Column4"}),
- 上述代码在
Column4不存在时,删除列操作会触发报错,需实现:先检测Column4是否存在,仅当该列存在时执行删除操作,不存在时跳过删除该列的逻辑
解决方案
方案1:动态过滤待删除列(适合需要明确指定删除列的场景)
先获取当前表的所有列名,和待删除列列表取交集,仅删除确实存在的列,代码示例如下:
#"Added Custom" = Table.AddColumn(#"Previous Step", "Custom", each [Column2]+[Column3]- (try [Column4] otherwise 0)), // 生成实际存在的待删除列列表 ColumnsToRemove = List.Intersect( {Table.ColumnNames(#"Added Custom"), {"Column2", "Column3", "Column4"} } ), #"Removed Unneeded Columns" = Table.RemoveColumns(#"Added Custom", ColumnsToRemove)
方案2:直接保留指定列(更简洁,适配“仅保留Custom列”的需求)
不用判断列是否存在,直接选择保留Custom列即可,完全规避删除不存在列的报错问题,代码更精简:
#"Added Custom" = Table.AddColumn(#"Previous Step", "Custom", each [Column2]+[Column3]- (try [Column4] otherwise 0)), #"Keep Only Custom Column" = Table.SelectColumns(#"Added Custom", {"Custom"})
内容的提问来源于stack exchange,提问作者Mario Di Noia
相关产品推荐
相关产品推荐

