Power Query中筛选ID Number数值范围并保留中间空行的方法
在Power Query中保留区间内空行的筛选方法
原始数据
| ID Number | Content |
|---|---|
| 1 | row1 |
| 2 | row2 |
| row3 | |
| 7 | row4 |
| row5 | |
| row6 | |
| 8 | row7 |
| 10 | row8 |
| 12 | row9 |
| 14 | row10 |
预期结果
| ID Number | Content |
|---|---|
| 2 | row2 |
| row3 | |
| 7 | row4 |
| row5 | |
| row6 | |
| 8 | row7 |
因为ID列是递增的,我们可以通过锁定目标行的索引区间来实现筛选,同时保留中间的空行,具体方法如下:
方法一:界面操作步骤
- 把数据导入Power Query编辑器。
- 点击「添加列」→「索引列」→「从0开始」(或从1开始,后续对应调整索引值即可)。
- 筛选
ID Number列等于2,记录对应的索引值;再筛选ID Number列等于8,记录对应的索引值。 - 点击索引列的筛选按钮,选择「数字筛选」→「介于」,输入刚才记录的两个索引值,点击确定。
- 右键索引列选择「删除」,最后关闭编辑器并上载结果。
方法二:直接编辑M代码
打开Power Query的「高级编辑器」,替换现有代码为以下内容(注意替换Table1为你的表格名称):
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], AddIndex = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type), StartIndex = List.PositionOf(AddIndex[ID Number], 2), EndIndex = List.PositionOf(AddIndex[ID Number], 8), FilterRows = Table.SelectRows(AddIndex, each [Index] >= StartIndex and [Index] <= EndIndex), RemoveIndex = Table.RemoveColumns(FilterRows,{"Index"}) in RemoveIndex
说明
这种基于索引区间的筛选方式,精准锁定了ID=2到ID=8之间的所有行,自然保留了中间的空行,完美避开标准筛选过滤空行的问题,只要ID=2和ID=8各仅出现一行,该方法就有效。
内容的提问来源于stack exchange,提问作者DearDeer
相关产品推荐
相关产品推荐

