【问题标题】:Excel VBA read pivot table and display msgboxExcel VBA读取数据透视表并显示msgbox
【发布时间】:2017-05-01 05:05:18
【问题描述】:

我有一个数据透视表和以下 VBA,它为第一行字段显示一个 msgbox,但我需要它遍历所有行字段,为每个字段显示一个消息框,有人能指出我正确的方向吗?好像不知道怎么做

Sub Piv()

  Dim PvTable As PivotTable
  Dim PvField As PivotField
  Dim PvItem As PivotItem

  Set PvTable = ActiveSheet.PivotTables("RawDataTable")
  Set PvField = PvTable.RowFields(1)

  With ws
    For Each PvItem In PvField.PivotItems
      MsgBox PvItem

    Next
  End With

End Sub

我也可以让它给我所有的字段标题,但不是数据

Sub Piv()

  Dim PvTable As PivotTable
  Dim PvField As PivotField
  Dim PvItem As PivotItem

  Set PvTable = ActiveSheet.PivotTables("RawDataTable")

  With ws
    For Each PvField In PvTable.PivotFields
      MsgBox PvField

    Next
  End With

 End Sub

【问题讨论】:

  • 我可能遗漏了一些东西,但在第一个示例中,你不能将 For 循环包装在另一个 For 循环中吗:For Each PvField In PvTable.RowFields
  • 这行得通,但它的循环方式错误,它给了我所有的第一列数据,然后是第二列,依此类推,但我想遍历整行然后移动到下一行跨度>
  • 出于好奇,这些消息框的目的是什么?每次显示后,您需要用户做什么?并且你会给用户一种方法在中途退出程序吗?

标签: vba excel pivot-table


【解决方案1】:

这是一种相当蛮力的方法,希望有人能想出更优雅的东西,但我们可以将行字段的详细信息读入一个数组数组,然后以相反的索引顺序遍历这个数组:

Option Explicit

Sub Piv()

    Dim PvTable As PivotTable
    Dim PvField As PivotField
    Dim PvItem As PivotItem
    Dim dataArray() As Variant
    Dim dummyArray() As Variant
    Dim i As Long
    Dim j As Long

    Set PvTable = ActiveSheet.PivotTables("RawDataTable")

    ReDim dataArray(1 To PvTable.RowFields.Count)
    ReDim dummyArray(1 To PvTable.RowFields(1).PivotItems.Count)

    For i = 1 To PvTable.RowFields.Count
        dataArray(i) = dummyArray
        For j = 1 To PvTable.RowFields(i).PivotItems.Count
            dataArray(i)(j) = PvTable.RowFields(i).PivotItems(j)
        Next j
    Next i

    For i = 1 To UBound(dataArray(1))
        For j = 1 To UBound(dataArray)
            MsgBox dataArray(j)(i)
        Next j
    Next i

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多