PowerBI M-language如何按列位置/索引删除列而非按列名删除
Power Query M 语言按列位置删除第5列实现方案
核心规则:M语言中表的列索引从0开始计数,你需要删除的第5列对应的索引值为4,无需依赖固定列名,动态获取对应位置的列名执行删除即可,适配所有列名不固定的场景。
可直接复用的代码
推荐用let语句封装步骤避免重复计算,替换你原有代码即可:
= let 导入并提升头 = Table.PromoteHeaders(Csv.Document([Content], [Delimiter = ";", Columns = 11, Encoding = 1252])), 目标删除列 = Table.ColumnNames(导入并提升头){4} in Table.RemoveColumns(导入并提升头, {目标删除列})
如果不想写let块,也可以直接内联写(不推荐,重复执行导入步骤性能略差):
= Table.RemoveColumns( Table.PromoteHeaders(Csv.Document([Content], [Delimiter = ";", Columns = 11, Encoding = 1252])), {Table.ColumnNames(Table.PromoteHeaders(Csv.Document([Content], [Delimiter = ";", Columns = 11, Encoding = 1252]))){4}} )
关键说明
- 索引计数规则:第1列对应索引0,第N列对应索引为
N-1,本次要删第5列所以固定取索引4,和该位置列名是什么没有关系 - 批量处理多文件时,只要每个表的第5列相对位置不变,这段逻辑不需要做任何调整,直接套用到你遍历文件的自定义函数里即可
- 如果你后续需要删除其他固定位置的列,只需要修改大括号里的索引值就行,比如删第2列就把
{4}改成{1}
内容的提问来源于stack exchange,提问作者Atmira
相关产品推荐
相关产品推荐

