如何在Power Query中对列集合使用List.RemoveNulls移除各列空值?
在Power Query中为每列移除空值并生成新表格
针对你现有的tblTest表格,要实现每列单独移除空值并生成新表的需求,我直接给你完整的解决方案和详细解释:
完整M代码
let Source = Excel.CurrentWorkbook(){[Name="tblTest"]}[Content], // 遍历所有列,筛选出每列的非空行并仅保留当前列 ProcessColumns = List.Transform(Table.ColumnNames(Source), each Table.SelectRows(Source, (row) => not List.IsEmpty({row[_]}))[[_]]), // 将处理后的单列数据合并为完整表格 CombineTables = Table.FromColumns(ProcessColumns, Table.ColumnNames(Source)) in CombineTables
代码分步解释
- 数据源获取:
Source行就是你已经导入的tblTest表格,确保这里的Name="tblTest"和你的实际表格名称完全一致。 - 逐列处理空值:
Table.ColumnNames(Source)先获取所有列的名称列表;List.Transform遍历每个列名,对每一列执行筛选:Table.SelectRows会保留当前列不为空的行,[[_]]是Power Query的快捷写法,用来只提取当前处理的这一列(避免带出其他列的数据)。
- 合并生成新表:
Table.FromColumns把所有处理后的单列数据组合成新表格,同时沿用原表格的列名,Power Query会自动在列数据长度不足的位置填充null。
最终效果
处理后的表格会像这样,每列只保留原列的非空值:
| Col1 | Col2 | Col3 | Col4 |
|---|---|---|---|
| 1 | 2 | 1 | 4 |
| 2 | 3 | null | null |
| null | 5 | null | null |
内容的提问来源于stack exchange,提问作者Aye_Aye_Frey




