Excel – 定义图表的源数据时的上一个图表名称

我试图写一个macros来创build一个新表中的数据透视表。 我有问题消除了对表名的依赖,因为我的数据名称每天都在改变,但是格式不对。

我的macros错误在这里与“运行时错误438:对象不支持此方法的属性”

'create pivot table Range("A1:J25").Select Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ ActiveSheet.Last & "!R1C1:R25C10", Version:=xlPivotTableVersion14 _ ).CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:= _ "PivotTable1", DefaultVersion:=xlPivotTableVersion14 

什么可以replace“sheetx!R1C1:R25C10”与那不依赖名字?

很高兴你有它的工作…如果表名更改,但工作表的位置保持不变,您可以通过索引引用:

 Const DataSheetIndex As Integer = 1 Dim sourceData As String sourceData = Worksheets(DataSheetIndex).Name & "!R1C1:R25C10" 

或者,如果名称更改,但至less有一定的一致性,例如初始字符,您可以使用Worksheets集合…

 Dim ws As Worksheet For Each ws In Worksheets If (Left$(ws.Name, 4) = "test") Then sourceData = ws.Name & "!R1C1:R25C10" End If Next ws 

而且还有一个链接,用于引用工作表的不同方式,以防其中一个更适合您的使用。

你可以试试这个:

 Sub CreatePivot() Dim dataSource, destination As String Dim wb As Workbook Dim data_sheet, new_sheet As Worksheet Set wb = ThisWorkbook Set data_sheet = wb.Sheets("my_data") 'assuming you have Sheet named "my_data" Set new_sheet = wb.Sheets.Add 'add the sheet new_sheet.Name = "my_pivot" 'Rename it dataSource = data_sheet.Name & "!" & data_sheet.Range("A1:J25").Address(ReferenceStyle:=xlR1C1) 'Set the source data, you can make this dynamic if you want destination = new_sheet.Name & "!" & new_sheet.Range("A1").Address(ReferenceStyle:=xlR1C1) 'Set the destination which is the newly created sheet 'then add the pivot wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ dataSource, Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:=destination, TableName:="PivotTable1", DefaultVersion _ :=xlPivotTableVersion14 'take note that version differs depending on your Excel version End Sub 

希望这会让你开始。

我只是遇到了同样的问题,并通过在创build透视之前重命名实际工作表来解决这个问题。

 activesheet.name = "Data" 

所以你的情况是这样的:

 Range("A1:J25").Select activesheet.name = "Data" Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Data!R1C1:R25C10", Version:=xlPivotTableVersion14 _ ......... 

我希望这有帮助。