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

时间:2014-02-03 12:46:11

标签: excel excel-vba pivot-table vba

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

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

添加报告过滤器时,我需要数据透视表向下展开页面,而不是向上展开页面。

Excel Example Screenshot

2 个答案:

答案 0 :(得分:1)

在查看是否存在可以更改的设置以使数据透视表向下展开页面后,我查看了如何使用VBA编写功能脚本。通过Visual Basic for Applications屏幕将以下代码添加到工作表中,检查每次更新时数据透视表的位置,然后如果在报表中添加或删除页面过滤器,则在页面上下移动它。设置StartLineLet&您希望数据透视表或页面项左上角保留的单元格地址的StartLineNum个变量。

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

答案 1 :(得分:0)

您还可以指示数据透视表(通过数据透视表选项&gt; 布局和格式)来显示报告字段向下,然后在通过更改每列的报告筛选字段,例如从零到三的值。

这将使数据透视表移动三行有限,然后开始向右添加报告字段(以三行为一组)