防止Excel数据透视表页面项目覆盖上面的单元格

我有一个Excel工作簿的工作表,其中包含一些公司模板标题与下方的数据透视表。

此文档将用作数据透视表报表的模板,并且标题必须在数据透视表上方保持不变,但是当项目添加到页面filter时,数据透视表将尝试向上扩展并最终覆盖上面的标题行。

添加报表filter时,需要透视表向下展开页面,而不是向上展开页面。

Excel示例屏幕截图

在查看是否有可以更改设置以使数据透视表向下展开后,我查看了如何使用VBA编写脚本function。 通过Visual Basic for Applications屏幕将下面的代码添加到工作表中检查每个更新上的数据透视表的位置,然后向上或向下移动页面(如果页面filter添加或从报表中删除)。 将StartLineLetStartLineNumvariables设置为希望数据透视表或页面项左上angular保留的单元格地址。

 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Dim StartLineLet As String Dim StartLineNum As Integer Dim DataAddr() As String Dim PageAddr() As String StartLineLet = "B" StartLineNum = 6 DataAddr = Split(Target.TableRange1.Cells(1).Address, "$") PageAddr = Split(Target.TableRange2.Cells(1).Address, "$") If PageAddr(2) <> StartLineNum Then Target.Location = "$" & StartLineLet & "$" & (DataAddr(2) + (StartLineNum - PageAddr(2))) End If End Sub 

您还可以指示数据透视表(通过数据透视表选项 > 布局和格式 )通过更改每列的报告filter字段(例如从零到三的值)来显示报告字段Down,然后结束

这将向下移动有限数量的三行数据透视表,并因此开始向右侧添加报表字段(以三行为单位)