我想简单地获取数据透视表总计的值。但是,我需要比在线解决方案更具动态性。
我在网上看到的一个简单解决方案是获取在合计总计列范围内找到的最后一个单元格。在这种情况下,将导致类似于下面提到的代码。
Dim grandTotal As Range
grandTotal = Range("E65536").End(xlUp)
MsgBox grandTotal.Value
但是,如果我在透视表下方的同一列中填充了一些数据,这将完全失败。有没有一种方法可以精确地参考总价值?也许像引用两个总计列和行的数据范围,并在两者之间找到一个相交以使单元格以黄色突出显示?
编辑:
如何获取两个不同数据值列的总计
答案 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