Могу ли я создать сводный кэш в VBA, используя несмежные строки? - PullRequest
0 голосов
/ 27 января 2020

Я хочу создать сводную таблицу, но не могу включать строки, являющиеся подкомпонентами родительской строки. Могу ли я просто исключить эти строки из сводной кэш-памяти или я должен найти другой способ go по этому поводу? То есть: возможно ли создать сводную таблицу, используя кэш из несмежных строк? Вот что у меня получилось, хотя и выдает ошибку (недопустимая процедура или вызов аргумента):

Dim FLF As WorkSheet
Set FLF = Workbooks("Template.xlsx").Worksheets("Template")
Dim TotalQQSheet As Worksheet
Set TotalQQSheet = Workbooks("Template.xlsx").Worksheets("Total QQ Sheet")

Dim pvt As PivotTable
Dim QQDataRange As Range
Dim NewCacheAddress As String

Dim pf As PivotField
Dim pi As PivotItem

'Finding the range of the PivotCache and ensuring subcomponents aren't included for the TotalQQSheet.
'Subcomponent composition (to be excluded) is listed in italic.

With FLF
    Set QQDataRange = .Range("A7:K7")
    For x = 7 To lng
        If .Range("K" & x).Font.FontStyle <> "Italic" And .Range("K" & x).Value > 0 Then
            Set QQDataRange = Union(QQDataRange, .Range("A" & x & ":K" & x))
        End If
    Next x
End With

Set pvt = TotalQQSheet.PivotTables("TotalQQTable")
TotalQQSheet.Activate

With pvt

pvt.ClearTable

NewCacheAddress = FLF.Name & "!" & _
    QQDataRange.Address(ReferenceStyle:=xlR1C1)

'Error here
.ChangePivotCache _
    Workbooks("Template.xlsx").PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=NewCacheAddress)

.RefreshTable

End With
...