Вам нужно объявить переменную, содержащую последнюю строку ваших данных, и заменить R30 на R & LastRow следующим образом:
Sub ptable()
Dim LastRow As Long
With ThisWorkbook.Sheets("GL ENTERED INV raw data")
LastRow = .Cells(.Rows.Count, 1).End(xlUp) 'the 1 means column "A" so if your data has the max rows on column A is ok, otherwise change that number
ThisWorkbook.Sheets.Add
ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="GL ENTERED INV raw data!R3C1:R" & LastRow & "C6", _
Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:=“Sheet1!R3C1”, _
TableName:=“PivotTable1”, DefaultVersion:=xlPivotTableVersion12
End Sub
Вы также можете просто создать NamedRange
под лентойФормулы и используйте формулу Offset
для получения динамического диапазона, ваша сводная таблица всегда будет использовать в качестве источника, NamedRange