2014-05-23 100 views
0

我创建了一个自动更新/更改我的数据透视表的源数据的宏。更改数据透视表的动态源数据Excel宏

我的宏的问题是源数据不是静态的。试算平衡表中的行数每天都在变化,因此单元格参考A1:F500不适用于我试图实现的内容。

列的数量始终是固定的(列A到F)。

如果有人可以伸出援助之手,我该如何检测如何获得试算表中找到的报告底部的顶部?那太好了!

Sheets("mtd move").pivottables("pvtmtd").SourceData = Sheets("trialbalance").[A1:F500].CurrentRegion.Address(True, True, xlR1C1, True) 
ActiveWorkbook.ShowPivotTableFieldList = False 
+2

把数据放在一个表中并指向它的位置。现在来源将是动态的。 –

回答

0

在上面的评论中,@DougGlancy有一个很好的建议。如果你坚持使用旧版本的Excel不支持内置Table结构,你可以使用以下方法来确定最后一排,然后包裹整个数据块在Range

'... 
Dim LastRow As Long 
Dim PivotSource As Range 
With Sheets("trialbalance") 
    LastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
    Set PivotSource = .Range(.Cells(1, 1), .Cells(LastRow, 6)) '<~ col F = 6 
End With 

你现在有一个Range对象,其中包含“trialbalance”表中所有数据,即A1中所有单元格(上面代码段中的.Cells(1, 1))到列F中最后占用的行(上述代码中的.Cells(LastRow, 6))。