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

PowerQuery/PowerBI技巧:如何保留首个NULL值出现前的所有行?

解决动态表格中筛选首个NULL值及后续行的问题

可以用Power Query来实现这个需求,步骤如下:

方法步骤(以Excel/Power BI为例)

  1. 将数据导入Power Query编辑器
    选中你的动态表格,点击「数据」选项卡(Excel)或「转换数据」(Power BI)进入Power Query编辑器。

  2. 添加索引列
    点击「添加列」>「索引列」>「从0开始」,给每行添加一个连续的索引值,方便定位位置。

  3. 获取首个NULL值的位置
    打开「高级编辑器」,在现有代码后插入以下代码(假设你的目标数据列名为目标列,请自行替换):

    FirstNullPosition = 
        let
            ColumnValues = #"添加的索引"[目标列],
            HasNull = List.Contains(ColumnValues, null)
        in
            if HasNull then List.PositionOf(ColumnValues, null, Occurrence.First) else Table.RowCount(#"添加的索引")
    

    这段代码会先检查列中是否存在NULL,存在则返回第一个NULL的索引;不存在则返回总行数,确保保留所有行。

  4. 筛选保留首个NULL之前的行
    继续在高级编辑器中添加筛选步骤:

    #"筛选的行" = Table.SelectRows(#"添加的索引", each [索引] < FirstNullPosition)
    
  5. 移除索引列(可选)
    如果不需要索引列,右键点击索引列选择「删除」即可,最后点击「关闭并上载」将处理后的数据返回表格。

替代方案:用自定义列标记有效行

如果更习惯用自定义列操作,也可以这样做:

  • 点击「添加列」>「自定义列」,输入以下公式(替换目标列为你的实际列名):
    let
        AllValues = 源[目标列],
        FirstNullIndex = List.PositionOf(AllValues, null, Occurrence.First)
    in
        [索引] < if FirstNullIndex = -1 then Table.RowCount(源) else FirstNullIndex
    
  • 点击确定后,筛选自定义列值为true的行,即可保留首个NULL之前的所有数据。

这个方法完全适配动态表格,无论后续数据如何变化,刷新后都会自动重新计算并筛选。

内容的提问来源于stack exchange,提问作者Stefano Luzi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:16