我正在尝试使用此宏每天在同一工作表名称上创建此数据透视表。唯一会改变的是数据源行,因为我不知道它会有多少行。我试图将整个字符串设置为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
答案 0 :(得分:1)
PivotCaches.Create
的SourceData参数是Range或Connection。我认为您的工作表名称中的空格也存在问题,答案是使用单引号。试试:
Set CurSourceData = Worksheets("Cases 23+ Day (Due today)").Range("B1", "T" & CurRow)
(我讨厌R1C1表示法,但在这里无法解决如何使用它。)
答案 1 :(得分: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)
祝你好运!