excel - 新工作表上的 VBA 数据透视表

标签 excel charts pivot-table vba

我已经录制了一个宏来在 VBA 中创建数据透视表和后续图表。它就像一个魅力,根本不是我需要的。问题是我希望能够运行代码并让它在不存在的工作表上创建一个表。基本上,我将从菜单上的按钮运行它,它应该在新页面上创建表格和图表。没有进一步的告别:

Sub Macro13()

' Macro13 Macro



    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Main Budget Sheet!R2C1:R88C10", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:="Sheet21!R1C1", TableName:= _
        "PivotTable12", DefaultVersion:=xlPivotTableVersion14
    Sheets("Sheet21").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable12").PivotFields("Category")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables( _
        "PivotTable12").PivotFields("Labor"), "Sum of Labor", xlSum
    ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables( _
        "PivotTable12").PivotFields("Material"), "Sum of Material", xlSum
    ActiveSheet.Shapes.AddChart.Select
End Sub

如果我把它用简单的英语表达,我会假设它的意思是……在主预算表中选择数据,然后在表 21 上创建一个名为数据透视表 12 的数据透视表……然后选择表 21 并选择数据透视表的字段表...最后,从该数据添加图表...

我认为我需要做的只是找出这些东西的通用名称(除了源数据)。

此外,目前它只会运行一次,并且只有当该工作表已经存在时,大概是因为它不能创建一个名为相同事物的数据透视表,所以如果它可以重复地在不同的工作表上创建同一个表,我会很高兴。

正如你所看到的,我已经尝试了足够多的方法,我已经创建了 21 张纸:/所以努力就在那里,但正如爱因斯坦对精神错乱的定义所说:“精神错乱是在尝试同样的事情并期待不同的结果。”目前,我已经没有新东西可以尝试了。

最佳答案

添加一个新工作表,然后使用该工作表添加新的数据透视表,如下所示:

Sub AddPivotOnNewSheet()
Dim wsNew As Worksheet

Set wsNew = Sheets.Add

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Main Budget Sheet!R2C1:R88C10", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=wsNew.Name & "!R1C1", TableName:= _
        "PivotTableName", DefaultVersion:=xlPivotTableVersion14

    With ActiveSheet.PivotTables("PivotTableName").PivotFields("Category")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Labor"), "Sum of Labor", xlSum
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Material"), "Sum of Material", xlSum

    wsNew.Shapes.AddChart.Select
End Sub

关于excel - 新工作表上的 VBA 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414244/

相关文章:

R:读取多个Excel文件,提取第一个工作表名称,并创建新列

c++ - 使用c++在excel中抑制删除工作表警告

EXCEL:根据相邻数据透视表的样式格式化单元格

python - Pandas :用百分比制作数据透视表

vba - MonthName(月份(现在) + x) ..... 13 错误;容易修复吗?

vba - 编译错误: Expected End Sub

algorithm - 图表数据的想法

jquery - 在网络上提供图表的最佳方式?服务器端或客户端库? HTML5?

.net - 在 .net 中绘制科学数据

mysql - 从一行中选择两个不同的值