错误1004:使用vba创建数据透视表时引用无效

时间:2010-08-31 23:58:18

标签: excel vba

我在excel文件中有一个包含3列(id,type,month)的工作表。

知道许多物品出现不止一次,我需要每个月得到每个身份证的出现次数,然后才能获得出现两次的ID数,出现三次,......

我被告知数据透视表是解决方案。所以我用宏录制器创建了一个数据透视表。当我尝试执行宏时,它向我发送错误1004:无效的引用。

这是我的宏:

Sub Relivr()
'
Dim LastRow As Long

LastRow = ActiveWorkbook.Worksheets("Delivery").Range("A65536").End(xlUp).Row

'the error comes from this line
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="'Delivery'!R1C1:R" & LastRow & "C4", Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:="'Delivery'!R1C13", TableName:="Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion12*
    Sheets("Delivery").Select
    Cells(1, 13).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("ID")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "Month")
        .Orientation = xlColumnField
        .Position = 1
    End With

    ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique2").PivotFields("type"), _
        "Nb delivries", xlCount

    ActiveSheet.PivotTables("Tableau croisé dynamique2").RowGrand = False

    Range("H3").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(RC[6]:R[12342]C[6],""=2"")"
    Range("H4").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(R[-1]C[7]:R[12341]C[7],""=2"")"

End Sub

我正在使用Office 2007

感谢任何和所有帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

你可以采取两种方式:

  1. 正如你所说,数据透视表是明显的选择,但我不确定为什么你认为VBA会阻止你使用它?一旦掌握了VBA,在VBA中操作数据透视表就相对容易了 - 宏记录器对于学习对象模型的细节非常有用,或者here是一个入门教程。

  2. 或者,您可以使用ADO连接到数据并使用SQL查询来获取所需信息。请注意,这需要在单独的工作表上对数据进行适当格式化,但这可以作为程序的一部分进行管理。 Microsoft有a good guide to using ADO to query Excel data