通过VBA转轴表

时间:2013-03-16 18:56:21

标签: excel-vba excel-2010 vba excel

我正在尝试使用此宏每天在同一工作表名称上创建此数据透视表。唯一会改变的是数据源行,因为我不知道它会有多少行。我试图将整个字符串设置为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

2 个答案:

答案 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)
祝你好运!