【问题标题】:Preventing Excel PivotTable Page Items overwriting Cells above防止 Excel 数据透视表页面项覆盖上面的单元格
【发布时间】:2014-02-03 12:46:11
【问题描述】:

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

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

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

【问题讨论】:

  • 我建议将这些标题移出工作表并将它们放入打印标题中。这不仅会提供更多的工作空间,而且会消除干扰。没有真正回答您的问题,但可以考虑替代。
  • @RobertCo 对于大多数情况来说,这是一个不错的选择,唯一的问题是标题有 255 个字符的限制。此外,这些报告将主要以数字方式共享,因此其他用户可以对其进行编辑而不是打印

标签: excel pivot-table vba


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 2021-07-26
      相关资源
      最近更新 更多