【问题标题】:How to iterate through dynamic Pivot table with Excel VBA?如何使用 Excel VBA 遍历动态数据透视表?
【发布时间】:2016-11-18 00:13:23
【问题描述】:

根据我收到的每日输入,我制作了一个数据透视表,我手动创建了一次。数据透视表具有活动过滤器。一旦我得到新的输入,我就会刷新枢轴。简而言之,它看起来像这样:

使用一个小的 VBA 宏,我想检索此人的姓名和他访问的国家/地区,然后检查这两个值。我如何遍历这个动态数据透视表以便为每一行获取名称和国家/地区(例如 Name = Amanda,Country = Spain)?

【问题讨论】:

  • 你能分享这些数据,这样我们就不必输入所有的东西了吗?
  • 你为什么要输入那个“东西”?
  • 测试我认为可能的解决方案
  • 还要注意这里的 C 是什么:stackoverflow.com/help/mcve
  • 谢谢 - 因为它不是关于重现特定问题,而是关于通用方法,我认为提供一些随机数据不会有帮助。不过我很高兴在这里提供一个随机数据示例:pastebin.com/T95XY9Wk - 感谢您的帮助!

标签: vba excel


【解决方案1】:

此代码将遍历 A 列并填充两个变量,即 Country 和 Name。
出于调试目的,我输出了一个字符串。

Sub Travel()

    Lastrow = Range("A" & Rows.Count).End(xlUp).Row
    For i = 4 To Lastrow ' Change i to first row with a name in pivot table
        If Range("A" & i).IndentLevel = 0 Then ' New person
            Name = Range("A" & i).Value
            Country = ""
        Else
            Country = Range("A" & i).Value
        End If

        If Country <> "" Then
            ' For debug purpose
            Range("C" & i).Value = Name & " was in " & Country
        Else
            ' The code is "in between" two names
        End If
    Next i


End Sub

【讨论】:

  • 感谢您提供代码 sn-p。我今天将在办公室测试它并尽快回复您
猜你喜欢
  • 1970-01-01
  • 2012-12-17
  • 2018-02-16
  • 2012-06-19
  • 1970-01-01
  • 2019-11-14
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多