excel - 在数据透视表中选择最后 3 个值(周)但没有使用 VBA 的“空白”
问题描述
我有一个包含多个数据透视表的报告。
我发现下面的宏在其中一个数据透视表中选择所需的周数(在我的情况下,我需要始终选择最后 3 周)。它确实选择了最后 3 个值,但问题是,它还选择了“空白”字段。
代码如下:
Sub ShowLastXWeeks()
Dim pi As PivotItem
Dim lLoop As Long
Dim pt As PivotTable
Dim lCount As Long
Dim lWeeks As Long
On Error Resume Next
lWeeks = 3
If lWeeks = 0 Then Exit Sub
Application.ScreenUpdating = False
Set pt = ActiveSheet.PivotTables("PivotTable1")
For Each pi In pt.PivotFields("Week").PivotItems
pi.Visible = False
Next pi
With pt.PivotFields("Week")
For lLoop = .PivotItems.Count To 1 Step -1
.PivotItems(lLoop).Visible = True
lCount = lCount + 1
If lCount = lWeeks Then Exit For
Next lLoop
End With
On Error GoTo 0
Application.ScreenUpdating = True
End Sub
我的数据透视表如下:
我试图摆脱“空白”价值,但没有成功。
如何修改上述脚本以省略“空白”字段并仅选择最后 3 周?
提前致谢。
解决方案
我已经找到了解决我自己问题的方法,所以我希望我能帮助其他遇到同样问题的人。通过将以下内容添加到我的代码中,我摆脱了“空白”值:
Set pf = pt.PivotFields("Week")
With pf
On Error Resume Next
.PivotItems("(blank)").Visible = False
On Error GoTo 0
End With
整个代码如下:
Sub ShowLastXWeeks()
Dim pi As PivotItem
Dim lLoop As Long
Dim pt As PivotTable
Dim lCount As Long
Dim lWeeks As Long
On Error Resume Next
lWeeks = 4
If lWeeks = 0 Then Exit Sub
Application.ScreenUpdating = False
Set pt = ActiveSheet.PivotTables("PivotTable1")
For Each pi In pt.PivotFields("Week").PivotItems
pi.Visible = False
Next pi
With pt.PivotFields("Week")
For lLoop = .PivotItems.Count To 1 Step -1
.PivotItems(lLoop).Visible = True
lCount = lCount + 1
If lCount = lWeeks Then Exit For
Next lLoop
End With
On Error GoTo 0
Set pf = pt.PivotFields("Week")
With pf
On Error Resume Next
.PivotItems("(blank)").Visible = False
On Error GoTo 0
End With
Application.ScreenUpdating = True
End Sub
谢谢
推荐阅读
- r - 使用 Tidy 方法将列乘以 R 中的数字
- query-optimization - 雪花仓库选择
- java - sqlite 无法连接到数据库错误:java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open_utf8([BI)V
- javascript - 如何从具有两个不同路径的键值的数组中删除重复对象?
- python - 如何在 Django 中更改注册用户名 max_length?
- php - 某些服务器上的 json 解码将点转换为数字上的逗号
- spring - Spring Data JPA如何解析查询方法中包含单词的单字母缩写的属性名称?
- c# - 我怎样才能让 OnNewIntent 开火
- python - MS-Access 和 Python - 数据库中的 NaN 问题
- python - 无法使用 selenium python 在 chrome 页面中定位元素