我正在尝试编写一个宏,它给出了数据透视表中最后一行的单元格D的值。这是我到目前为止的代码。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PT As PivotTable
Dim Can As Worksheet
Dim LastRow As Range
Set Can = Worksheets("Can")
Set PT = Can.PivotTables("Can Table")
Set Flight1 = Can.Range(("D14"), ("D" & Rows.Count)).End(xlDown)
Can.Range("AC15") = Application.WorksheetFunction.Sum(Flight1)
End Sub
这个宏工作正常,直到我开始使用数据透视表。由于数据透视表中有一些单元格没有值,因此我现在拥有的代码将识别最后一行直到无值单元格。我想要的是数据透视表的最后一行(又名" Grand Total")。如何选择数据透视表的最后一行来忽略数据透视表中可能没有值的任何单元格?
由于
答案 0 :(得分:0)
使用End(xlDown)查找最后一行非常不稳定 尝试
("D" & Rows.Count).End(xlUp)
如果您的数据透视表下面有数据,我可以看到唯一的问题
答案 1 :(得分:0)
您可以使用pivottable TableRange1属性
根据需要调整以下内容
Option Explicit
Sub test()
Dim PT As PivotTable
Dim Can As Worksheet
Dim Flight1 As Range
Dim lastRow As Long
Set Can = ThisWorkbook.Worksheets("Can")
With Can
Set PT = .PivotTables("Can Table") 'change as appropriate
lastRow = .Range(Split(PT.TableRange1.Address(0, 0), ":")(1)).Row
If lastRow >= 14 Then
Set Flight1 = Can.Range("D14:D" & lastRow)
Else
Debug.Print "Last row is before start row of 14"
End If
End With
If Not Flight1 Is Nothing Then Debug.Print Flight1.Address
End Sub