0

我试图能够使用这个宏每天在同一个工作表名称上创建这个数据透视表。唯一会改变的是数据源行,因为我永远不知道它将是多少行。我试图将整个字符串设置为 CurSourceData 变量,然后只使用它,但它失败并说无效的 arg。

任何想法都会有所帮助。

Sheets("Cases 23+ Day (Due Today)").Select
 Range("A1").Select
 Selection.End(xlDown).Select
     Selection.End(xlDown).Select
CurRow = ActiveCell.Row
CurSourceData = "Cases 23+ Day (Due today)!R1C2:R" & CurRow & "C20"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    CurSourceData, Version:=xlPivotTableVersion14). _
    CreatePivotTable TableDestination:="Master Summary!R3C7", TableName:= _
    "PivotTable3", DefaultVersion:=xlPivotTableVersion14
Sheets("Master Summary").Select
Cells(3, 7).Select
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
    "PivotTable3").PivotFields("Status"), "Count of Status", xlCount
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Status")
    .Orientation = xlRowField
    .Position = 1
End With
4

2 回答 2

1

SourceData 参数PivotCaches.Create是 Range 或 Connection。我认为您的工作表名称中的空格也存在问题,答案是使用单引号。尝试 :

Set CurSourceData = Worksheets("Cases 23+ Day (Due today)").Range("B1", "T" & CurRow)

(我讨厌 R1C1 表示法,在这里不知道如何使用它。)

于 2013-03-16T20:36:11.773 回答
0

假设您的数据集从单元格 A1 开始,这对我有用:

Dim MyRange As Range

Dim lrow As Long

Dim lcol As Long

lrow = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row

lcol = ActiveSheet.Cells(1, Application.Columns.Count).End(xlToLeft).Column

Set MyRange = ActiveSheet.Cells(1, 1).Resize(lrow, lcol)

祝你好运!

于 2014-09-09T15:48:42.410 回答