excel - 使用 VBA 根据枢轴钻头重命名工作表名称

标签 excel pivot-table vba

我在 Excel 中有一个数据透视表,如下所示:

Team         Doc 1  Doc 2   Grand Total
Team A       13     12      25
Team B       8      7       15
Team C       32     5       37
Grand Total  53     24      77

我已经编写了一段 VBA,它将格式化任何向下钻取工作表以进行打印(Workbook_NewSheet(ByVal Sh As Object))。但是,由于我试图使其尽可能用户友好,因此我真的希望能够使用 vba 自动重命名从数据透视表生成的任何工作表。但是,我不确定如何执行此操作,因为每个工作表的内容会根据用户单击的位置而有所不同(即,如果用户单击“Team A Doc 1 Total”,则该工作表应命名为“Team A Doc 1”但如果用户单击 Doc 2 的 Grand Total 行,则该工作表应命名为“Grand Total Doc 2”) - 我认为可能会出现 15 个不同的工作表名称,这就是为什么我猜测工作表默认为表1!我认为可以通过使用 offset 来根据事件单元格获取团队名称或列名称来生成名称,但我不太确定从哪里开始,因此任何建议/帮助将不胜感激!

谢谢

最佳答案

我希望我可以发表评论,但我还不能,因为我没有足够的代表点! (必须重新启动我的帐户!)

我建议您在手动深入任何给定数据点时录制宏,并查看录制的 vba 代码的外观。我认为从那里您可以配置代码,使工作表的名称基于记录代码的某些元素。

因为我希望这是一条评论,所以如果没有帮助,我会删除它。

更新您新发布的答案:

要在用户向下钻取时检查工作表是否已存在,您可以在获取工作表名称后检查工作表是否存在,如果存在,请选择它,而不是创建一个新工作表。否则,你就创建它。

请参阅此代码:

Private Sub Workbook_NewSheet(ByVal sh As Object)

Application.ScreenUpdating = False

Dim shtCur As Worksheet
Set shtCur = ActiveSheet

Sheets("DQ Summary").Select
RN = ActiveCell.Row
CN = ActiveCell.Column
SheetName = Cells(RN, 2).Value & " - " & Cells(9, CN).Value


If SheetExists(SheetName) Then
    Worksheets(SheetName).Select
Else

    shtCur.Move _
        After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
    shtCur.Name = "SheetName"
End If


Application.ScreenUpdating = True


End Sub

Function SheetExists(wsName As String, Optional wb As Workbook = Nothing) As Boolean

SheetExists = False
Dim WS As Worksheet

If wb Is Nothing Then Set wb = ThisWorkbook

On Error Resume Next
Set WS = wb.Worksheets(wsName)
On Error GoTo 0

If Not WS Is Nothing Then SheetExists = True

End Function

关于excel - 使用 VBA 根据枢轴钻头重命名工作表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776353/

相关文章:

excel - 如何逐个复制列并在每次复制之间执行计算?

excel - vlookup目录指向特定目录

.net - ado net - 导入 Excel 数据 - 丢失数据

python - 每个日期的点数总和按列表形式的附加列分组

vba - 属性 vba 类的使用无效

c# - Excel VSTO + C# .NET + 创建数据透视表

excel - 在 Excel 数据透视表中组合列值

excel - 如何更改 EPPlus 中 ColumnField 列标题的格式?

vba - Excel VBA - 选择包含隐藏列的范围

ms-access - 将 DAO 转换为 ADO