Фон на PivotItem.Visible
Если вы фильтруете PivotTable
, то некоторые из ваших Rowfields
или ColumnFields
показывают меньше PivotItems
.
К сожалению, каждый соответствующий PivotField.PivotItem
по-прежнему возвращается как Visible
, даже если вы его не видите.Также PivotField.VisibleItems.Count
не уменьшается.
Адресация к "действительно" видимым PivotItems
Фильтрация PivotTable
изменяет видимые DataRange
PivotField
, поэтомуВы можете зациклить его ячейки и использовать значение ячейки для идентификации каждого видимого PivotItem
:
Dim pItemCell As Range
For Each pItemCell In pField.DataRange
If pItemCell.Value <> "(blank)" Then
Set pItem = pField.PivotItems(pItemCell.Value)
pItem.DataRange.ShowDetail = True
ActiveSheet.Name = pItem.Name
End If
Next pItemCell
Вы также можете зациклить каждое PivotRowAxis.PivotLines().PivotLineCells().PivotItem
.
Пожалуйста, посмотрите мой ответ здесь: https://stackoverflow.com/a/55444457/10908769
Получение сведений о столбце GrandTotals
Dim pTable As PivotTable
Dim pField As PivotField
Dim i As Long
Set pField = Sheets("PivotTable").PivotTables(1).PivotFields("Company")
Set pTable = pField.Parent
If pTable.RowGrand = True Then
For i = 1 To pField.DataRange.Cells.Count
pTable.DataBodyRange.Cells(i, pTable.DataBodyRange.Columns.Count).ShowDetail = True
ActiveSheet.Name = pField.DataRange.Cells(i).Value
Next i
End If
Подсказка для ActiveSheet.Name
Обратите внимание, чтоСуществуют ограничения для переименования листа: https://stackoverflow.com/a/54620175/10908769