2011-03-12 159 views
1

我得到了这个运行时错误'1004': - 这个命令至少需要两行源数据。您只能在一行中的选择上使用该命令。请尝试以下操作:如果您使用的是高级过滤器,请选择包含至少两行数据的单元格区域。然后再次单击高级筛选命令。如果你正在创建一个数据透视表或数据透视图报表,键入[停止这里]创建数据透视表

我在得到上述错误: -

pvc.CreatePivotTable TableDestination:=Worksheets("TABLE").Range("A1"), _ 
TableName:="INFO", DefaultVersion:=xlPivotTableVersion12 

我试图运行此代码: -

Sub CreateTable() 
Dim lastRow As Long 
Dim pvc As PivotCache 
lastRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row 
    ActiveWorkbook.Names.Add Name:="Database", RefersTo:="=DATA!$G$1:$K$" & lastRow 
Set pvc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Database", Version:=xlPivotTableVersion12) 
pvc.CreatePivotTable TableDestination:=Worksheets("TABLE").Range("A1"), _ 
TableName:="INFO", DefaultVersion:=xlPivotTableVersion12 
    Sheets("TABLE").Select 
    Cells(1, 1).Select 
    ActiveWorkbook.ShowPivotTableFieldList = True 
    With ActiveSheet.PivotTables("INFO").PivotFields("MODEL") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("INFO").PivotFields("TYPE") 
     .Orientation = xlRowField 
     .Position = 2 
    End With 
    ActiveSheet.PivotTables("INFO").AddDataField ActiveSheet.PivotTables(_ 
    "INFO").PivotFields("GRADE"), "Sum of GRADE", xlSum 
    ActiveSheet.PivotTables("INFO").AddDataField ActiveSheet.PivotTables(_ 
    "INFO").PivotFields("SIZE"), "Sum of SIZE", xlSum 
    ActiveSheet.PivotTables("INFO").AddDataField ActiveSheet.PivotTables(_ 
    "INFO").PivotFields("QTY"), "Sum of QTY", xlSum 
    With ActiveSheet.PivotTables("INFO").PivotFields("MODEL") 
     .Orientation = xlColumnField 
     .Position = 2 
    End With 
    With ActiveSheet.PivotTables("INFO").PivotFields("TYPE") 
     .Orientation = xlColumnField 
     .Position = 3 
    End With 
    With ActiveSheet.PivotTables("INFO").PivotFields("Sum of GRADE") 
     .Orientation = xlPINFOField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("INFO").PivotFields("Sum of SIZE") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveWorkbook.ShowPivotTableFieldList = False 
    Range("B3").Select 
    ActiveSheet.PivotTables("INFO").CompactLayoutColumnHeader = "MODEL" 
    Range("A5").Select 
    ActiveSheet.PivotTables("INFO").CompactLayoutRowHeader = "SIZE" 
    Range("A1").Select 
    ActiveSheet.PivotTables("INFO").PivotFields("GRADE").Caption = "GRADE" 
    Cells.Select 
    Cells.EntireColumn.AutoFit 
    Columns("B:BB").Select 
    Selection.Style = "Comma" 
    Cells.Select 
    Cells.EntireColumn.AutoFit 
    Range("C1").Select 
End Sub 

请帮助。

谢谢。

回答

0

看来,出现这种错误的原因是由于第四行:

lastRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row 

通过的这个样子,你是在寻找列查找数据的最后一排的“数据”表6.现在,如果我们看看你与组合:现在

ActiveWorkbook.Names.Add Name:="Database", RefersTo:="=DATA!$G$1:$K$" & lastRow 

,如果你的源数据是在细胞G1:K **则:

ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row 

将始终返回1,除非您在第6列中有数据,但从上面的行看来,您的数据似乎从第7列开始(“G”)。因此,为了实现这个目标,您必须将第四行更改为:

lastRow = ActiveSheet.Cells(Rows.Count, 7).End(xlUp).Row