excel - VBA - VBA 非常新 努力根据包含时间和日期的单元格过滤数据透视表 .pivotitems
问题描述
我对 VBA 很陌生并且碰壁了。我正在尝试自动使用 15 个数据透视表(本例中只有一个测试)当我手动执行此操作时,我在数据透视搜索框中输入“mm/yyyy”并从给定月份返回项目。(如屏幕截图所示)
如果我专注于字母列或数字列,则以下代码会正确过滤,但如果我尝试专注于案例创建时间/格式化日期,我会得到“无法获取 pivotfield 类的 pivotitem 属性”
我认为这是因为日期和时间结合在一起,或者因为数据不是“干净的”。
欢迎您提供任何非常基本的指示。
谢谢
代码:
Sub DateFilterPivotWithSlicer()
Dim p_i As PivotItem
ActiveSheet.PivotTables("PivotTable2").ClearAllFilters
ActiveSheet.PivotTables("PivotTable2").PivotFields ("FormattedDate")
With ActiveSheet.PivotTables("PivotTable2").PivotFields("FormattedDate")
.PivotItems("24/08/2018").Visible = True
For Each p_i In .PivotItems
' If loop here will cycle through all items in the pivot table and then pass to next
If p_i.Name <> "24/08/2018" Then
p_i.Visible = False
End If
Next
End With
End Sub
解决方案
尝试
Sub DateFilterPivotWithSlicer()
Dim p_i As PivotItem
Dim pv As PivotTable
Dim Ws As Worksheet
Dim sFind As String, s As String
Dim d As Long
Set Ws = ActiveSheet
Set pv = Ws.PivotTables("PivotTable2")
'Set pv = Ws.PivotTables(1)
pv.ClearAllFilters
With pv.PivotFields("FormattedDate")
sFind = "08/2018"
sFind = Replace(sFind, "/", "-")
For Each p_i In .PivotItems
s = p_i.Name
d = DateValue(p_i.Name)
s = Format(d, "mm/yyyy") 's result 08-2018
' If loop here will cycle through all items in the pivot table and then pass to next
If s = sFind Then
p_i.Visible = True
Else
p_i.Visible = False
End If
Next
End With
End Sub
推荐阅读
- c++ - 在函数与类/命名空间范围内行为不同的 C++ 宏值
- amazon-web-services - 为什么我无法访问 AWS IAM 列表,尽管我拥有所有 IAM 权限?
- android - Xamarin.Forms Android 对象引用未设置为对象的实例
- ios - IOS/Objective-C:子视图的子视图不显示
- javascript - 完整的背景图像鼠标移动覆盖范围
- java - 动态设置视图样式
- python-3.x - DataError: No numeric types to aggregate to create pivot_table in Pandas
- jenkins - 根据 Jenkins 中的参数区分作业历史
- docker - Adobe 媒体服务器 Docker
- android - 查找手动注册(混淆)的原生函数地址