Power Query逆透视列生成无效数据行的解决方法
问题:避免逆透视时长列时生成多余数据行
我有一个包含报表信息的大型表格,新增了4列记录特定流程的时长:
- MinToH:执行开始到当前小时结束的分钟数
- MinFromH:下一小时到执行结束的分钟数
- StartH:开始小时
- EndH:结束小时
在逆透视这两组信息时,MinFromH列值大于0的情况会生成多余数据行,导致可视化求和结果错误,该如何解决?
初始表格
| MinToH | MinFromH | StartH | EndH |
|---|---|---|---|
| 10 | 0 | 7 | 7 |
| 20 | 15 | 8 | 9 |
逆透视后生成的错误结果
先逆透视小时列并去重,得到:
| MinToH | MinFromH | Hours |
|---|---|---|
| 10 | 0 | 7 |
| 20 | 15 | 8 |
| 20 | 15 | 9 |
再逆透视分钟列后,出现多余数据行:
| Minutes | Hours |
|---|---|
| 10 | 7 |
| 0 | 7 |
| 20 | 8 |
| 15 | 8 |
| 20 | 9 |
| 15 | 9 |
期望得到的正确结果
| Minutes | Hours |
|---|---|
| 10 | 7 |
| 0 | 7 |
| 20 | 8 |
| 15 | 9 |
解决方法
核心逻辑是让MinToH只对应StartH,MinFromH只对应EndH,避免所有小时都绑定两组分钟值,具体操作如下:
拆分关联数据
- 第一组:保留
MinToH和StartH,分别重命名为Minutes和Hours,移除其他列 - 第二组:保留
MinFromH和EndH,分别重命名为Minutes和Hours,移除其他列,同时筛选掉Minutes=0的行(此时StartH=EndH,无需重复生成数据)
- 第一组:保留
合并两组数据
将上述两组处理好的数据追加合并,即可得到目标表格。
如果用Power Query处理大型表格,步骤更直观:
- 复制原表格,分别对两个副本做列筛选与重命名
- 对第二组副本添加筛选规则,仅保留
Minutes>0的行 - 点击「追加查询」,合并两组数据完成预处理
内容的提问来源于stack exchange,提问作者Nasos255
相关产品推荐
相关产品推荐

