Power Query中根据索引列表删除列的M代码实现需求
在Power Query中通过列索引列表删除指定列
核心思路
先建立所有列的索引与列名的映射,筛选出不在待删除索引列表中的列名,最后保留这些列即可实现需求。以下是具体的M代码实现:
完整M代码示例
假设你的数据源表名为Source,待删除的列索引列表为MyList = {1,2},直接将以下代码整合到你的查询中:
let // 定义待删除的列索引列表(替换为你实际获取的列表) MyList = {1,2}, // 获取所有列的索引与列名的映射表 ColumnIndexMap = Table.FromList( Table.ColumnNames(Source), Splitter.SplitByNothing(), {"ColumnName"}, null, ExtraValues.Error ) |> Table.AddIndexColumn("Index", 0, 1, Int64.Type), // 筛选出需要保留的列名(排除待删除索引对应的列) KeepColumns = ColumnIndexMap |> Table.SelectRows( each not List.Contains(MyList, [Index]) ) |> Table.Column("ColumnName"), // 保留指定列,得到最终结果 Result = Table.SelectColumns(Source, KeepColumns) in Result
适配你的实际需求
你已经完成了"获取值相同列的索引"步骤,只需将代码中的MyList = {1,2}替换为你获取到的索引列表即可,无需调整其他逻辑。
注意:Power Query的列索引默认从0开始,与你给出的示例规则一致,无需额外转换索引值。
内容的提问来源于stack exchange,提问作者Rafadan
相关产品推荐
相关产品推荐

