Я пытаюсь выяснить, как правильно фильтровать сводную таблицу на основе столбца вычисленной суммы (поля данных), чтобы я мог собрать как метки, так и значения, оставшиеся после фильтрации.Примеры лучше слов, вот моя сводная таблица (созданная с использованием кода, приведенного ниже):
Row Labels Sum of things
XXXXXXXXX 0
YYYYYYYYY 0
ZZZZZZZZZ 2045
AAAAAAAAA 0
BBBBBBBBB 0
Мне бы хотелось отфильтровать сводную таблицу на основеЗначение поля (сумма вещей), и только держать строки больше 0.
Так что это оставило бы меня с
Row Labels Sum of things
ZZZZZZZZZ 2045
Как только я получу всеосталось элементов, Я хотел бы получить все эти значения (метка строки + сумма вещей больше 0) и скопировать их на другой лист.
Вот что я сделал такfar:
Создание сводной таблицы
workBk.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
workBk.Sheets(workSht.Name).Range("A1").CurrentRegion).CreatePivotTable _
TableDestination:=workBk.Sheets(workShtPivot.Name).Cells(1, 1), _
TableName:="PivotTableTest"
With workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").PivotFields(whatToPivot)
.Orientation = xlRowField
.Position = 1
End With
workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").AddDataField workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").PivotFields("Net " & whatToPivot & " Amount"), "Sum of things", xlSum
Выполнение фильтра, который я хотел: оставляйте только строки, у которых «Sum of вещ» больше 0
workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").PivotFields(whatToPivot).PivotFilters.Add2 Type:=xlValueIsGreaterThan, _
DataField:=workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").PivotFields("Sum of things"), Value1:=0
Наконец, при попытке перебрать оставленные элементы (после фильтрации) кажется, что они все еще видны, даже если они отфильтрованы (я перебираювесь набор сводных элементов, даже те, которые равны 0, которых я бы хотел избежать)
Dim cellRange As Range
For Each pivotItm In workBk.Sheets(workShtPivot.Name).PivotTables("PivotTableTest").PivotFields(whatToPivot).PivotItems
If pivotItm.Visible = True Then
MsgBox (pivotItm.Value)
End If
Next pivotItm
Что бы я хотелтолько циклы
ZZZZZZZZZ 2045
Я действительно не могу понять, почему эти отфильтрованные элементы все еще считаются видимыми
Спасибо за любую помощь