У меня есть куча (14) сводных таблиц на двух листах (по 7 на каждом листе).

У меня есть кнопка обновления на листе, которая обновляет все сводные таблицы, используя следующий код:

Sub Refresh_Pivots()

Dim pt As PivotTable
    Dim WS As Worksheet
    For Each WS In ThisWorkbook.Worksheets
        For Each pt In WS.PivotTables
          pt.RefreshTable
          Next pt
    Next WS
End Sub

Все сводные таблицы имеют схожую структуру, и во всех сводных таблицах есть одно поле под названием "Месяц". Мне нужно отфильтровать "(пусто)" из сводного поля "Месяц" во всех сводных таблицах, когда я нажимаю Обновить.

Для этого я добавил эту строку под вложенным циклом после pt.RefreshTable -

pt.pf("month").pi("(blank)").ShowDetail = False

Итак, измененный код:

Sub Refresh_Pivots()

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim WS As Worksheet
    For Each WS In ThisWorkbook.Worksheets
        For Each pt In WS.PivotTables
          pt.RefreshTable
          pt.pf("month").pi("(blank)").ShowDetail = False
          Next pt
    Next WS
End Sub

Но я получаю ошибку компиляции. Я не могу понять, почему. Я относительно новичок в VBA, поэтому извините, если это глупый вопрос.

Кроме того, мне нужны эти пробелы в данных, просто нужно отфильтровать их из сводных таблиц. Благодарю.

1 ответ1

0

Я думаю, вам нужно заменить pf на PivotFields, а pi на PivotItems.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .