Excel 新图纸上的VBA透视表
我录制了一个宏,用于在VBA中创建透视表和后续图表。它就像一个符咒,完全不是我所需要的。问题是,我希望能够运行代码并让它在一个不存在的工作表上创建一个表。基本上,我将从菜单上的按钮运行它,它将在新页面上创建表格和图表。没有进一步的告别:Excel 新图纸上的VBA透视表,excel,charts,pivot-table,vba,Excel,Charts,Pivot Table,Vba,我录制了一个宏,用于在VBA中创建透视表和后续图表。它就像一个符咒,完全不是我所需要的。问题是,我希望能够运行代码并让它在一个不存在的工作表上创建一个表。基本上,我将从菜单上的按钮运行它,它将在新页面上创建表格和图表。没有进一步的告别: Sub Macro13() ' Macro13 Macro ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Main Budget
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上创建一个名为pivot table 12的pivot表。。。然后选择工作表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
添加新图纸,然后使用该图纸添加新轴,如下所示:
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
我确实试过了,虽然它确实创建了一个新表,但表并没有在其中结束。我确实试过了,虽然它确实创建了一个新表,但表并没有在其中结束。哦,我的天哪,我花了4个小时试图弄明白这一点,而你就这样来解决它。非常感谢你。你太棒了。最后一件事,抱歉,“数据透视表名称”是一种通用形式,它可以使您不需要特定的名称,或者您可以在其中添加任何内容?@NicholasBrandon您可以使用任何您想要的数据透视表名称哦,天哪,我花了4个小时试图弄明白这件事,你就这样过来解决它。非常感谢你。你太棒了。最后一件事,很抱歉,“PivotTableName”是一种通用形式,它使您不需要特定的名称,或者您可以在其中添加任何内容吗?@NicholasBrandon您可以使用任何您想要的名称,以确保pivot表的成功运行。。享受吧,伙计们:)它跑得很成功。。喜欢男人:)