5 простых способов обновить все сводные таблицы в Excel VBA

Сводные таблицы Excel – это мощная функция, позволяющая суммировать и анализировать данные структурированным и динамическим способом. Однако при изменении базовых данных вам необходимо обновить сводные таблицы, чтобы обновить результаты. В этой статье мы рассмотрим пять простых способов обновления всех сводных таблиц в книге Excel с помощью VBA. Итак, приступим!

Метод 1: использование цикла For Each
Один простой подход — просмотреть каждый лист в книге, проверить, содержит ли он какие-либо сводные таблицы, и обновить их, если они найдены. Вот код:

Sub RefreshAllPivotTables()
    Dim ws As Worksheet
    Dim pt As PivotTable

    For Each ws In ThisWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws
End Sub

Метод 2: использование метода обновления PivotCache
Другой способ — напрямую обновить сводный кэш, связанный с каждой сводной таблицей. Этот метод может оказаться быстрее, если в вашей книге большое количество сводных таблиц:

Sub RefreshAllPivotTables()
    Dim ws As Worksheet
    Dim pt As PivotTable

    For Each ws In ThisWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.PivotCache.Refresh
        Next pt
    Next ws
End Sub

Метод 3: использование метода Workbook.RefreshAll
Если вы хотите обновить все объекты в книге, включая сводные таблицы, запросы и диаграммы, вы можете использовать метод RefreshAllметода объект рабочей книги:

Sub RefreshAllPivotTables()
    ThisWorkbook.RefreshAll
End Sub

Метод 4: использование метода Worksheet.PivotTables.Update
Вы также можете использовать метод Updateколлекции PivotTablesдля обновления всех сводных таблиц в определенной рабочий лист:

Sub RefreshAllPivotTables()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        ws.PivotTables.Update
    Next ws
End Sub

Метод 5: использование метода PivotTable.RefreshDataSourceValues
Если вы хотите обновить только значения источников данных сводных таблиц без изменения макета или вычислений, вы можете использовать метод RefreshDataSourceValues:

Sub RefreshAllPivotTables()
    Dim ws As Worksheet
    Dim pt As PivotTable

    For Each ws In ThisWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshDataSourceValues
        Next pt
    Next ws
End Sub

В этой статье мы рассмотрели пять простых способов обновления всех сводных таблиц в книге Excel с помощью VBA. Автоматизируя процесс обновления, вы можете сэкономить время и гарантировать, что ваши сводные таблицы всегда отражают самые последние данные. Так что выберите метод, который соответствует вашим потребностям, и попробуйте!

Не забудьте сохранить копию книги перед запуском любого кода VBA, чтобы избежать непредвиденных последствий.