vba - VBA 从存储在动态范围中的值过滤数据透视表中的值
问题描述
我试图从存储在“str”范围内的值中仅选择 PivotTable1 中的值,不包括过滤器中的任何空白,通过运行下面的代码我没有在过滤器中获取值。这段代码有什么问题,是否有任何替代解决方案可以满足我的要求。
Dim star As String
Dim startRange As String
Dim lastRange As String
startRange = ThisWorkbook.Sheets("Peer Code").Range("J2").Address
lastRange = ThisWorkbook.Sheets("Peer Code").Range("J" & LR0).Address
star = startRange & ":" & lastRange
ThisWorkbook.Sheets("Conso_Input").Activate
Dim PI As PivotItem
With
Worksheets("Conso_Input").PivotTables("PivotTable1").PivotFields("FundCode")
.ClearAllFilters
For Each PI In .PivotItems
PI.Visible = WorksheetFunction.CountIf(Range(star), PI.Name) > 0
Next PI
End With
新代码
ThisWorkbook.Sheets("Peer Code").Activate
Dim LR0 As Integer
LR0 = Range("J" & Rows.Count).End(xlUp).Row
Dim star As String
Dim startRange As String
Dim lastRange As String
startRange = ThisWorkbook.Sheets("Peer Code").Range("J2").Address
lastRange = ThisWorkbook.Sheets("Peer Code").Range("J" & LR0).Address
star = startRange & ":" & lastRange
ThisWorkbook.Sheets("Conso_Input").Activate
Dim PvtTbl As PivotTable
Dim PvtFld As PivotField
Dim PI As PivotItem
Dim MatchFound As Boolean, i As Long
' set the Pivot Table
Set PvtTbl =
ThisWorkbook.Sheets("Conso_Input").PivotTables("PivotTable1")
' set the Pivot Field
Set PvtFld = PvtTbl.PivotFields("FundCode")
ThisWorkbook.Sheets("Conso_Input").Activate
PvtTbl.ClearAllFilters
For Each PI In PvtFld.PivotItems
'For Each PI In .PvtTbl.PivotItems
PI.Visible = WorksheetFunction.CountIf(Range(star), PI.Name) > 0
Next PI
解决方案
尝试这样的事情:
Dim wsPC As Worksheet, wsCI As Worksheet
Dim PvtTbl As PivotTable, rngStar As Range
Dim PvtFld As PivotField, PI As PivotItem, m
Set wsCI = ThisWorkbook.Sheets("Conso_Input")
Set wsPC = ThisWorkbook.Sheets("Peer Code")
Set rngStar = wsPC.Range("J2:J" & wsPC.Cells(Rows.Count, "J").End(xlUp).Row)
Set PvtTbl = wsCI.PivotTables("PivotTable1")
PvtTbl.ClearAllFilters
Set PvtFld = PvtTbl.PivotFields("FundCode")
For Each PI In PvtFld.PivotItems
m = Application.Match(PI.Name, rngStar, 0)
PI.Visible = Not IsError(m)
Next PI
推荐阅读
- c# - 进程类启动泄漏内存
- c# - “使用 Visual Studio 调试 lambda 表达式”不再起作用?
- android - SIMpleDateFormat 使用 GMT + 6.5 返回错误值
- swift4 - 是否可以使用 ML Kit 以纵向模式扫描条码?
- ruby - 使用 Ruby 为 iTunes Connect API 生成 JWT
- c++ - operator< 给出 operator __surrogate_func 错误
- gradle - 如何有条件地接受 Kotlin DSL 中的 Gradle 构建扫描插件服务条款?
- sql - 如何获得多个 SUM 语句的总数
- java - 如何在我的 java 应用程序中连接到 mongo db?
- c# - 在 ASP.net 核心应用程序的强类型配置类中使用 System.Uri