根据变量范围过滤数据透视表

2023-12-07

我的目标是使用另一张工作表中的范围来过滤数据透视表。该范围从第三张表中提取数据,这是启动大量公式并在每次使用时发生变化的数据转储。

我有下面的代码,但我可以看到它所做的是运行每个数据透视表字段,将其与范围进行比较,然后删除过滤器。我有 32,000 个字段需要检查,因此当前的宏太慢而无法使用。

谁能帮助我修复代码,以便它仅根据非空白范围内的值进行过滤?

Sub PT()
Dim PT As PivotTable
Dim PI As PivotItem
Set PT = Sheets("Pivot_Sheet").PivotTables("PivotTable2")
With Sheets("Pivot_Sheet").PivotTables("PivotTable2").PivotFields("Product")
.ClearAllFilters
End With
For Each PI In PT.PivotFields("Product").PivotItems
PI.Visible = WorksheetFunction.CountIf(Sheets("Sheet1").Range("J2:J100"),
PI.Name) > 0
Next PI
Set PT = Nothing
End Sub

从很多方面来说,你的代码都会变慢。读一下我的关于这个主题的博文如果您有兴趣了解过滤数据透视表时要避免的瓶颈。

下面的代码应该可以帮助您入门。如果您有任何疑问,请大声喊叫。

Option Explicit

Sub FilterPivot()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Long
Dim vItem As Variant
Dim vList As Variant

Set pt = ActiveSheet.PivotTables("PivotTable2")
Set pf = pt.PivotFields("Product")

vList = Application.Transpose(ActiveWorkbook.Worksheets("Sheet1").Range("J2:J100"))

pt.ManualUpdate = True 'Stops PivotTable from refreshing after each PivotItem is changed

With pf

    'At least one item must remain visible in the PivotTable at all times, so make the first
    'item visible, and at the end of the routine, check if it actually  *should* be visible
    .PivotItems(1).Visible = True

    'Hide any other items that aren't already hidden.
    'Note that it is far quicker to check the status than to change it.
    ' So only hide each item if it isn't already hidden
    For i = 2 To .PivotItems.Count
        If .PivotItems(i).Visible Then .PivotItems(i).Visible = False
    Next i

    'Make the PivotItems of interest visible
    On Error Resume Next 'In case one of the items isn't found
    For Each vItem In vList
        .PivotItems(vItem).Visible = True
    Next vItem
    On Error GoTo 0

    'Hide the first PivotItem, unless it is one of the items of interest
    On Error Resume Next
    If InStr(UCase(Join(vList, "|")), UCase(.PivotItems(1))) = 0 Then .PivotItems(1).Visible = False
    If Err.Number <> 0 Then
        .ClearAllFilters
        MsgBox Title:="No Items Found", Prompt:="None of the desired items was found in the Pivot, so I have cleared the filter"
    End If
    On Error GoTo 0

End With

pt.ManualUpdate = False

End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据变量范围过滤数据透视表 的相关文章

  • 在php中将excel转换为xml

    我想读取 Excel 文件并根据该数据创建 XML 文件 在php中可以吗 Thanks 快速谷歌搜索发现this PHP https github com PHPOffice PHPExcelCodePlex 上的项目 您可能想看一下 它
  • EPPlus / 如何从数据透视表获取数据?或者说如何轻松操作数据?

    我在处理报告中的数据上浪费了很多时间 使用数据透视表是个好主意 但是如何呢 我尝试了一些免费的PivotTable类 但缺少小计 然后 另一种方法 为了excel我正在使用的报告的输出EPPlus 它还支持数据透视表 问题是我们的一些客户没
  • 如何从有条件的列中获取最新值

    我在 Excel 中有一个表 其中包含以下列 Date 人名 金额 英镑 该表用于记录人们何时付钱给我 通常 我可以让不止一个人在同一天向我付款 而且 随着时间的推移 同一个人会在很多天向我付款 记录添加到表格底部 以便按日期排序 但不再按
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • Excel 中数字的条件格式(自定义格式)具有多个条件

    我想根据单元格中的值动态地将数字格式化为 M 百万 B 十亿 或 K 千 我尝试过 但这不起作用 gt 1000000000 0 B gt 1000000 0 M gt 1000 0 K 0 如果我给出任意两个条件 它就会起作用 例如 gt
  • VB.NET 中的 Excel 自动调整列

    我这里有我的 VB6 代码并且运行良好 For CLms 1 To 10 ws Columns CLms AutoFit lt Autofilt data on XL sheet Next CLms 我已经搜索了如何在 VB NET 中使
  • 如何在vba中查找命名形状的索引号

    我运行了以下代码 for i 1 to activedocument Shapes count debug Print activedocument shapes i name next 并获得了形状列表 但是缺少一个形状 我选择了一个未包
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 在vba中为图例设置颜色代码

    我在每个工作表中都有数据透视表 我必须对它们进行比较 但每个工作表中图例的颜色都不同 如何设置颜色 例如 如果我的图例条目是 ISO 我希望它始终为 蓝色 如果它是 LAT 我希望它在每张纸中都为 红色 这可以通过操纵来完成Series中的
  • 使用具有多个元素的字典过滤数据框

    我已经尝试了几个小时来在这里找到答案 但我无法在我的特定情况下找到任何答案 我能找到的最接近的是 使用字典将多个字符串包含过滤器应用于 pandas 数据框 https stackoverflow com questions 4338916
  • 点击后如何等待页面加载

    下面是简单的 IE 自动化代码 只需输入订单号 例如1413105088和邮政编码始终是78759并单击 提交 按钮 然后从结果页面中获取跟踪号码 例如017136295201034并将它们放入 C 列 它按预期工作 但由于 IE 不太可靠
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • Excel HTTP 获取超时

    我们有这个小子 它只是将数据泵入远程服务器 一切都按预期进行 前几天 网络服务器发生了一次持续大约一个小时的事件 我仍然可以 PING 服务器 但 IIS 没有响应 结果 宏只是挂起等待响应 关于快速通过 失败测试或超时有什么想法吗 Sub
  • Mac 上使用 Excel VBA 进行正则表达式

    我需要将 regEx 与 Excel VBA 一起使用 我使用的是 Mac OS 10 10 和 Office 2011 因此没有可以使用的 DLL 文件 这里有什么可做的 我读到我必须绑定一个苹果脚本 这是如何完成的以及该脚本需要什么内容
  • VBA:如何从 MS Access 运行另一个应用程序

    我一直在试图解决这个问题 但似乎我在任何地方都找不到解决该问题的方法 这是第一部分 VBA Shell 命令始终返回 找不到文件 https stackoverflow com questions 10439024 vba shell co
  • 自动创建 Outlook 约会

    我有一个跟踪到期日期的电子表格 excel 2003 我想知道是否有办法让这些到期日期在 Outlook 中创建约会 提醒 到期日期位于电子表格的一个字段中 实体名称位于另一列中 理想情况下 我希望 Outlook 2003 能够获取日期
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N

随机推荐

  • 从母版页调用部分视图时出现 ASP.NET MVC 堆栈溢出异常

    当我尝试从主控调用部分视图时 出现堆栈溢出错误 部分视图
  • Android 上的 OMA DRM v1 和 v2 支持

    Are OMA DRMAndroid 支持 v1 和 v2 吗 如果没有 有计划吗 是否有任何第三方库可以实现 OMA DRAM v1 和 v2 简短的回答是它不存在 但看起来有 3rd party 库 From 邮件列表 仅支持前向锁定
  • 片段单元测试:launchFragment 抛出 ClassCastException

    我试图在单元测试中调用 Fragment 类中的方法 但我不断收到错误java lang ClassCastException androidx fragment app testing FragmentScenario EmptyFrag
  • 我如何知道函数的参数数量?

    我们如何知道一个函数有多少个参数 例如 对于给定的函数f 我想做 if arg number f 0 f else if arg number f 1 f FALSE nargs 将检查函数内参数的数量 函数的参数数量 Edit forma
  • 使用 JNI 将 float* 转换为 jfloatArray

    我在 C 函数中获得了一个 float 我需要将其转换为 jfloatArray 以返回到我的 Java 代码 如何将 float 转换为 jfloatArray Thanks 要将 float 转换为 jfloatArray 可以使用 N
  • 如何将文件夹添加到 java 构建路径作为库,其中包含多个 jar 或条目?

    首先 我想说非常感谢 Rich seller 解决了我以编程方式更改 eclipse java 构建路径中的条目顺序的查询 我想将我的 Library 文件夹添加到 java 构建路径 其中有几个 jar 它的行为应该像类路径容器 我尝试使
  • 将 ISO 格式的日期转换为 DATETIME

    我正在使用 SQL Server Management Studio 编写 SQL 查询 并且有一些 ISO 日期格式的 NVARCHAR 类型值 例如 20130302T164800 我需要将它们转换为 DATETIME 我尝试过Conv
  • 分解除括号之外的字符串?

    我正在尝试通过垂直条来爆炸一根弦 这是最简单的部分 但是 我不希望分割影响括号内的子字符串 这意味着我需要一个字符串 例如 Hello sir maam Hi there 爆炸成 Array 0 gt Hello sir maam 1 gt
  • 计算字符串中的数学表达式

    stringExp 2 4 intVal int stringExp Expected value 16 这将返回以下错误 Traceback most recent call last File
  • 在 C# 中更改子文件夹的权限

    我正在编写一个 DLL 来更改文件夹及其下所有内容的权限 下面是我现在拥有的代码 当我调用 addPermissions 时 问题就出现了 它正确设置了 dirName 文件夹以及我稍后在 dirName 下创建的任何文件夹的权限 但是当我
  • 如何在 React Native 中将一个组件的状态传递给另一个组件?

    我正在研究 React Native 我首先运行有两个文件geolocation函数获取坐标并将其分配给状态 现在我想在我的第二个文件中访问这个状态 我尝试使用props但当我控制台日志时它显示未定义 请帮助我是新手 export defa
  • TextBaseline 的字母和表意枚举在 Flutter 中不起作用

    我想我明白这些枚举是如何基于此工作的post 当我使用以下代码尝试它时 它似乎不起作用 Row mainAxisAlignment MainAxisAlignment center crossAxisAlignment CrossAxisA
  • 使用 Python 合并 Excel 工作表中的特定单元格

    我一直在尝试通过循环将符合特定条件的单元格与其旁边的单元格合并 但我不太确定如何进行 例如 从第 7 行开始 如果单元格中包含 Sample 一词 我希望它与旁边列中的单元格合并 并且我想继续这样做 直到到达该行的末尾 我目前正在为此使用
  • 当前由 Service Worker 'fetch' 事件提供服务的页面的 URL

    如何获取 Service Worker 的 fetch 事件所服务的页面的完整 URL self location 属性似乎仅指网站的根 URL 例如 如果页面https example com folder pagename html正在
  • 如何找到 Log4j 的深层用法

    我想找到当前版本 2 15 0 之前log4j的所有用法 我尝试使用maven的 mvn dependency tree 使用了几个工具 依赖性检查 grype 对我不起作用 syft 对我不起作用 log4j detector 但它们只列
  • OpenCV中如何计算凸性缺陷?

    OpenCV函数使用的算法是什么convexityDefects 计算轮廓的凸度缺陷 请描述并说明该算法的高级操作及其输入和输出 基于文档 输入是两个坐标列表 contour定义原始轮廓 下图中的红色 convexhull定义与该轮廓相对应
  • 将 Android 搜索栏与拇指对齐

    我试图将搜索栏与视图顶部对齐 但无法用拇指将其居中 是否有某种带有RelativeLayout 子项的 alignCenter 这是我的 xml 代码示例
  • 由于 SunCertPathBuilderException:找不到证书,无法在 Eclipse 中连接到 GitHub

    我已经使用 Eclipse EE Luna 设置了我的 mac 一切似乎都工作正常 来自 Windows 我安装了 EGit 和 Github Mylin 插件 但是 我似乎无法在 Eclipse 中克隆 github 项目 当通过 EGi
  • 在Java Maven项目中通过Spark查询Cassandra中的数据

    我正在尝试编写一个简单的代码 在其中创建一个架构 插入一些表 然后提取一些信息并将其打印出来 但是 我收到错误 我正在使用 Datastax cassandra Spark 连接器 我一直在使用这两个例子来帮助我尝试实现这一目标 https
  • 根据变量范围过滤数据透视表

    我的目标是使用另一张工作表中的范围来过滤数据透视表 该范围从第三张表中提取数据 这是启动大量公式并在每次使用时发生变化的数据转储 我有下面的代码 但我可以看到它所做的是运行每个数据透视表字段 将其与范围进行比较 然后删除过滤器 我有 32