在VBA的数据透视表模板上定义源数据

时间:2016-05-16 13:00:43

标签: excel vba excel-vba

我在Spreadsheetguru上发现了这个代码,我在编辑代码时遇到了问题。

Sub CreatePivotTable()
'PURPOSE: Creates a brand new Pivot table on a new worksheet from data in the ActiveSheet
'Source: www.TheSpreadsheetGuru.com

Dim sht As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String

'Determine the data range you want to pivot
  SrcData = ActiveSheet.Name & "!" & Range("A1:R100").Address(ReferenceStyle:=xlR1C1)

'Create a new worksheet
  Set sht = Sheets.Add

'Where do you want Pivot Table to start?
  StartPvt = sht.Name & "!" & sht.Range("A3").Address(ReferenceStyle:=xlR1C1)

'Create Pivot Cache from Source Data
  Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=SrcData)

'Create Pivot table from Pivot Cache
  Set pvt = pvtCache.CreatePivotTable( _
    TableDestination:=StartPvt, _
    TableName:="PivotTable1")

End Sub

为什么我无法将 SrcData 定义为工作表(" SHEETNAME")。范​​围(" A1:A100")?它返回类型13错误:不匹配。我尝试在线查找答案,大多数示例都参考了SrcData for ActiveSheet.Range而不是定义的表格。

谢谢!

如果您可以向我展示示例数据透视图如何在此工作表上使用工作表(" PivotExp"),这也会有很大帮助。http://imgur.com/TShQ1ls

非常感谢你!

1 个答案:

答案 0 :(得分:-1)

  

为什么我不能将SrcData定义为   工作表( “SHEETNAME”)范围。( “A1:A100”)?

数据透视表适用于二维数据(表格形式),即行和列,但使用A1:A100,您只提供一维数据(列表形式)。您还需要根据语法规则分配源数据。

It returns a type 13 error: mismatch.

由于上述原因导致的不匹配错误。

  

如果您能告诉我示例如何转动,这也会有很大帮助   将在这个工作表(“PivotExp”)   片。http://imgur.com/TShQ1ls

由于某种原因,图片不可见,但您可以访问以下示例链接:http://analysistabs.com/excel-vba/pivot-tables-examples/,其中显示了如何使用VBA代码创建数据透视表。
既然,你的代码丢失了许多与Pivot相关的信息,那么Pivot就不会形成,但通过访问上面的链接,你可以有所了解,其中缺少什么。