我有几个数据透视表,它们从一个源工作表中获取数据。数据将不时地通过宏进行更新,以删除所有现有数据并用新数据覆盖。数据集中的列号是固定的,但是更新后行可能会以任何一种方式更改,因此我需要一个动态数据源引用作为我的数据透视表。我最终得到了VBA代码:
BaseApiClient.default.fetch(request: APIRouter.GetSocialWarmerType) { (rsult:ResponseBaseObject<SocialWarmer>) in
print(rsult.data)
}
我认为这根本不是完美,快速的解决方案,但是由于数据集并不大,因此我可以接受,直到我想在我的数据透视表中添加切片器和时间表。重新打开工作簿后,我开始收到有关其已损坏的通知,Excel需要对其进行修复。通过修复,它删除了我的切片器/时间轴及其缓存。因此,我发现崩溃纯粹与切片器/时间轴有关,并且在一篇帖子中发现了类似的问题-建议作者不要使用宏进行数据透视更新,并尝试不使用宏。所以这是一个问题-我的宏是否有可能使切片器/缓存崩溃?是否可以仅添加
Public Sub pivotr()
Dim SrcData As String
Dim PivTbl As PivotTable
Dim ws, sheet As Worksheet
Dim lastrow As Long
Set ws = ActiveWorkbook.Worksheets("PivotData")
lastrow = Worksheets("PivotData").Cells(Worksheets("PivotData").Rows.Count, "B").End(xlUp).Row
SrcData = ws.Name & "!" & Range("$A$1:$K$" & lastrow).Address(ReferenceStyle:=xlR1C1)
For Each sheet In ActiveWorkbook.Worksheets
For Each PivTbl In sheet.PivotTables
PivTbl.SourceData = SrcData
PivTbl.RefreshTable
Next PivTbl
Next sheet
End Sub
避免吗?最后,如何使用更直接的数据透视表数据源方法-只需输入:
Cache.Clear
即选择工作表中的整个列,更新后数据可能会出现在哪里?那行得通,为什么或为什么不可行呢?预先感谢!