自动选择数据透视表SourceData中的最后一行以避免(空白)

时间:2010-06-18 13:19:34

标签: excel excel-vba excel-2007 vba

需要一点帮助,我有一个Macro自动创建数据透视表和图表,这一切都正常,但我在我的数据透视表中得到(空白),因为我的范围一直到65536。 如何自动获取源数据中的lastrow /列,这样我就不会得到任何空白。数据不断变化,因此需要自动

这是源数据,我希望根据“原始”表的最后一列自动生成R65536C37

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "raw!R1C1:R65536C37").CreatePivotTable _
    TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion10

我试过了;

LastRow = ActiveSheet.UsedRange.Rows.Count
SourceData:= "raw!R1C1:" & LastRow & C37"

透视宏

    Sheets("Frontpage").Select
Range("A7").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "raw!R1C1:R65536C37").CreatePivotTable _
    TableDestination:="Frontpage!R7C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion10
Sheets("Frontpage").Select
Cells(7, 1).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("Frontpage!$A$7:$H$22")
ActiveChart.ChartType = xlColumnClustered
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Priority")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Case ID"), "Count of Case ID", xlCount
ActiveChart.Parent.Name = "IncidentsbyPriority"
ActiveChart.ChartTitle.Text = "Incidents by Priority"
Dim RngToCover As Range
Dim ChtOb As ChartObject
Set RngToCover = ActiveSheet.Range("D7:L16")
Set ChtOb = ActiveSheet.ChartObjects("IncidentsbyPriority")
ChtOb.Height = RngToCover.Height ' resize
ChtOb.Width = RngToCover.Width ' resize
ChtOb.Top = RngToCover.Top ' reposition
ChtOb.Left = RngToCover.Left ' reposition

非常感谢任何帮助。我需要在其他四个支点中重复这一点,以避免在我的表格和图表中得到(空白)。

1 个答案:

答案 0 :(得分:0)

我通常使用命名动态范围。 例如,创建一个名为RawData的命名范围,其公式为:
= OFFSET(原始$ A $ 1,0,0,COUNTA(原始$ A:!$ A),COUNTA(生$ 1:!$ 1))

这假设第1列或第1行中的数据 (数据末尾之外的空白/空白不是问题)。

如果您的数据中有空白,那么您需要使用不同的功能:您可以从这种计数中下载一组函数(fxlCountFuncs.zip) http://www.decisionmodels.com/downloads.htm