Excel VBA的总计数据透视表范围参考

时间:2019-04-17 08:27:02

标签: excel vba

我想简单地获取数据透视表总计的值。但是,我需要比在线解决方案更具动态性。

enter image description here

我在网上看到的一个简单解决方案是获取在合计总计列范围内找到的最后一个单元格。在这种情况下,将导致类似于下面提到的代码。

Dim grandTotal As Range
grandTotal = Range("E65536").End(xlUp)
MsgBox grandTotal.Value

但是,如果我在透视表下方的同一列中填充了一些数据,这将完全失败。有没有一种方法可以精确地参考总价值?也许像引用两个总计列和行的数据范围,并在两者之间找到一个相交以使单元格以黄色突出显示?

编辑:

如何获取两个不同数据值列的总计

enter image description here

2 个答案:

答案 0 :(得分:0)

好吧,因为它将是数据透视表中最右下的单元格:

Set pt = Activesheet.PivotTables(1)
grandTotal = pt.DataBodyRange.Cells(pt.DataBodyRange.Cells.Count).Value

答案 1 :(得分:0)

如果您需要引用不同的“行”或“列总计”,则这种方法应该适合您。

Sub SelectGrandTotal()
  Dim pt As PivotTable
  Dim rGrandTotal As Range
  
  Set pt = ActiveSheet.PivotTables(1)
  
  With pt
  
    'This condition checks if the GrandTotals are activated. Not really necessary in some cases.
    If .ColumnGrand And .RowGrand Then
      With .DataBodyRange
      
        'Add "- 1" after ".Count" if you want to move between different Totals.
        Set rGrandTotal = .Cells(.Rows.Count, .Columns.Count)
        rGrandTotal.Select
        'Print
        MsgBox (rGrandTotal)

      End With

    End If

  End With

End Sub