VBA创建数据透视表错误1004

时间:2017-07-05 00:53:42

标签: excel excel-vba pivot-table vba

我正在尝试让一个程序为我创建几个数据透视表(因为我必须每周/每月执行此操作)但是相同类型的数据。

基于多个网站,我复制了一些代码并编辑了以下代码:

Private Sub CommandButton1_Click()

'Declaration



'Creates new worksheet

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

'Create a new worksheet
  Set sht = Sheets.Add
  sht.Name = "EUPS Report"

'Determine the data range you want to pivot
  Set DataRange = Application.InputBox("Please Select the Data (Please select by pressing any cell in the table then pressing ctrl+a)", Default:=Selection.Address, Type:=8)
  SrcData = sht.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)

'Where do you want Pivot Table to start?
'  StartPvt = "'" & sht.Name & "!" & sht.Range("A15").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:=Worksheets("EUPS Report").Range("A15"))
'   TableName:="PivotTable1")

End Sub

但是,我遇到了这个错误:

运行时错误'1004':

数据透视表字段名称无效。若要创建数据透视表,您必须使用组织为带有标记列的列表的数据。如果要更改数据透视表字段的名称,则必须为该字段键入新名称。

我无法向您显示我的数据,因为它是公司信息,但它是带有列标题但没有行标题的常规数据表。我已经在其他数据上测试了这段代码,但它也无法正常工作。我已经使用手动创建的数据透视表测试了我的数据并且它们确实有效,所以这就是代码的问题。

请让我知道什么是错的。谢谢!

1 个答案:

答案 0 :(得分:1)

使用Excel表对象存储数据,然后您可以按名称引用表作为数据透视表的源。该表将随数据增长和缩小,您只需在数据更改时刷新数据透视表。

您可以手动将数据复制并粘贴到表中,也可以使用Power Query从几乎任何数据源获取数据。 Power Query是Microsoft for Excel 2010和2013的免费插件,它作为Get& Transform内置于Excel 2016中。

这里的想法是,刷新数据比每周从头开始构建数据透视表更容易,更有效。这实际上违背了数据透视表的目的。工作更聪明,而不是更难。