如何通过Power Query循环ProdList批量添加EC_Prodx自定义列?
问题解决:Power Query 批量动态添加EC_Prodx列
错误原因
你使用[E_ & current]的写法是错误的——Power Query中[列名]是静态列引用,无法在方括号内直接拼接字符串生成动态列名,因此会触发“E_为无效标识符”的报错。
正确实现方案
要动态拼接列名并取值,需使用Record.Field函数,它可以接收当前行记录和目标列名字符串,实现动态字段访问。
完整代码
let ProdList = {"Prod1", "Prod2", "Prod3", "Prod4", "Prod5", "Prod6", "Prod7", "Prod8", "Prod9", "Prod10", "Prod11", "Prod12", "Prod13", "Prod14", "Prod15"}, AddColumns = List.Accumulate( ProdList, myTable, (state, current) => Table.AddColumn( state, "EC_" & current, each if Record.Field(_, "E_" & current) = 2 and Record.Field(_, "C_" & current) = 2 then [CLPC] else "n/a" ) ) in AddColumns
关键逻辑说明
List.Accumulate:以myTable为初始表格,遍历ProdList中的每个元素,逐步给表格添加新列Record.Field(_, "E_" & current):_代表当前行的记录,第二个参数是拼接后的目标列名(例如当current为Prod1时,生成E_Prod1),以此动态获取对应列的值- 后续若
ProdList内容变动,只需修改ProdList的列表项,代码会自动适配生成对应数量的EC_Prodx列
内容的提问来源于stack exchange,提问作者morphil
相关产品推荐
相关产品推荐

