PowerQuery/PowerBI技巧:如何保留首个NULL值出现前的所有行?
解决动态表格中筛选首个NULL值及后续行的问题
可以用Power Query来实现这个需求,步骤如下:
方法步骤(以Excel/Power BI为例)
将数据导入Power Query编辑器
选中你的动态表格,点击「数据」选项卡(Excel)或「转换数据」(Power BI)进入Power Query编辑器。添加索引列
点击「添加列」>「索引列」>「从0开始」,给每行添加一个连续的索引值,方便定位位置。获取首个NULL值的位置
打开「高级编辑器」,在现有代码后插入以下代码(假设你的目标数据列名为目标列,请自行替换):FirstNullPosition = let ColumnValues = #"添加的索引"[目标列], HasNull = List.Contains(ColumnValues, null) in if HasNull then List.PositionOf(ColumnValues, null, Occurrence.First) else Table.RowCount(#"添加的索引")这段代码会先检查列中是否存在NULL,存在则返回第一个NULL的索引;不存在则返回总行数,确保保留所有行。
筛选保留首个NULL之前的行
继续在高级编辑器中添加筛选步骤:#"筛选的行" = Table.SelectRows(#"添加的索引", each [索引] < FirstNullPosition)移除索引列(可选)
如果不需要索引列,右键点击索引列选择「删除」即可,最后点击「关闭并上载」将处理后的数据返回表格。
替代方案:用自定义列标记有效行
如果更习惯用自定义列操作,也可以这样做:
- 点击「添加列」>「自定义列」,输入以下公式(替换
目标列为你的实际列名):let AllValues = 源[目标列], FirstNullIndex = List.PositionOf(AllValues, null, Occurrence.First) in [索引] < if FirstNullIndex = -1 then Table.RowCount(源) else FirstNullIndex - 点击确定后,筛选自定义列值为
true的行,即可保留首个NULL之前的所有数据。
这个方法完全适配动态表格,无论后续数据如何变化,刷新后都会自动重新计算并筛选。
内容的提问来源于stack exchange,提问作者Stefano Luzi
相关产品推荐
相关产品推荐

