更改数据透视表Excel宏的动态源数据

时间:2014-05-23 04:06:17

标签: excel-vba pivot vba excel

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

我的宏的问题是源数据不是静态的。 trialbalance表中的行数每天都在变化,因此单元格引用A1:F500不适用于我想要实现的目标。

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

如果有人可以借助他或她如何帮助我如何检测如何在试算表中找到报告的最高点?那太好了!

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

1 个答案:

答案 0 :(得分:0)

在上面的评论中,@ DougGlancy有一个很好的建议。如果您遇到不支持内置Table构造的旧版Excel,则可以使用以下内容来标识最后一行,然后将整个数据块包装在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))。