You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query技术问询:提取每行空/Null列名及选中列Null单元格

问题1:Power Query中获取每行所有空白/Null列的列名

在Power Query编辑器中,可通过添加自定义列实现,步骤及M代码如下:

  1. 加载数据并完成前期清洗(如调整数据类型)后,进入Power Query编辑器。
  2. 点击添加列 → 自定义列。
  3. 在自定义列对话框中输入以下代码(将#"之前的步骤名"替换为你实际的步骤名称,比如#"更改的类型"):
List.Select(
    Table.ColumnNames(#"之前的步骤名"),
    each 
        let 
            currentValue = Record.Field([_], _)
        in 
            currentValue = null 
            or (Value.Is(currentValue, type text) and Text.Trim(currentValue) = "")
)
  1. 若需将列名合并为逗号分隔的文本,用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:40:59