Power Query技术问询:提取每行空/Null列名及选中列Null单元格
问题1:Power Query中获取每行所有空白/Null列的列名
在Power Query编辑器中,可通过添加自定义列实现,步骤及M代码如下:
- 加载数据并完成前期清洗(如调整数据类型)后,进入Power Query编辑器。
- 点击添加列 → 自定义列。
- 在自定义列对话框中输入以下代码(将
#"之前的步骤名"替换为你实际的步骤名称,比如#"更改的类型"):
List.Select( Table.ColumnNames(#"之前的步骤名"), each let currentValue = Record.Field([_], _) in currentValue = null or (Value.Is(currentValue, type text) and Text.Trim(currentValue) = "") )
- 若需将列名合并为逗号分隔的文本,用
Text.Combine包裹上述代码:
Text.Combine( List.Select( Table.ColumnNames(#"之前的步骤名"), each let currentValue = Record.Field([_], _) in currentValue = null or (Value.Is(currentValue, type text) and Text.Trim(currentValue) = "") ), ", " )
这段代码会遍历当前行所有列,判断值是否为Null或去除空格后为空的文本,最终筛选出符合条件的列名。
问题2:简化提取选中列中含Null单元格的操作
场景1:Excel工作表(替代复杂IF嵌套)
无需嵌套IF,直接用FILTER函数结合ISBLANK实现:
- 提取单列中所有Null/空白单元格:
=FILTER(A:A, ISBLANK(A:A)) - 提取多列中任意一列存在Null/空白的整行数据:
=FILTER(A:C, MMULT(--ISBLANK(A:C), SEQUENCE(COLUMNS(A:C),,1,0))>0)
MMULT会计算每行空白单元格数量,只要数量大于0就会被筛选,比多个IF条件简洁高效。
场景2:Power Query中筛选含Null的行
使用Table.SelectRows结合List.Contains筛选指定列存在Null的行:
Table.SelectRows( #"之前的步骤名", each List.Contains({[列1], [列2], [列3]}, null) )
将[列1], [列2], [列3]替换为你需要检查的列名,即可筛选出指定列中任意一列值为Null的行。
内容的提问来源于stack exchange,提问作者Amar Gunjal
相关产品推荐
相关产品推荐

