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

标签 excel pivot-table vba

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

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

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

Excel Example Screenshot

最佳答案

在查看是否有可以更改的设置以使数据透视表向下扩展页面后,我研究了如何使用 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

关于excel - 防止 Excel 数据透视表页面项覆盖上面的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21527819/

相关文章:

d3.js - 如何使用 d3.js 旋转表格?

vba - 如果文件扩展名为 .xls,则 MsgBox

excel - 如何使用arrayformula "textjoin"(包括忽略空单元格)?

Excel VBA : How to remove substrings from a cell?

excel - 在 Excel 中将时间格式化为天、小时、分钟和秒的更好方法?

excel - 为 VBA 类模块创建 DLL 还是更好的替代方案?

python - 如何在groupby之后将数据框中的行值转换为Python中的列标签?

python - 如何获取每行的百分比并可视化分类数据

vba - 范围变化时设置总和范围

excel - 打开文件而不调用 Filepath