Видимо, это работает только с PivotTable.TableRange1
(который является основным диапазоном поворотной таблицы без фильтров, т.е. PageFields
над ней)
и не с полным PivotTable.TableRange2
.
Если в вашей сводной таблице также есть поля страницы, вам необходимо скопировать этот диапазон выше сводной таблицы, дополнительно по ячейкам.
Sub PivotTablePaste()
Dim SourcePivottable As PivotTable
Dim DestinationRange As Range
Dim aCell As Range
Set SourcePivottable = Worksheets("Sheet1").PivotTables(1)
Set DestinationRange = Worksheets("Sheet1").Range("P1")
' Copy TableRange1
SourcePivottable.TableRange1.Copy
With DestinationRange.Offset( _
SourcePivottable.TableRange1.Row - SourcePivottable.TableRange2.Row, 0)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteColumnWidths
End With
' Copy everything above TableRange1 cell-by-cell
For Each aCell In SourcePivottable.TableRange2.Cells
If Not Intersect(aCell, SourcePivottable.TableRange1) Is Nothing Then Exit For
aCell.Copy
With DestinationRange.Offset( _
aCell.Row - SourcePivottable.TableRange2.Row, _
aCell.Column - SourcePivottable.TableRange2.Column)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With
Next aCell
End Sub