Как автоматически обновлять сводную таблицу при каждом изменении источника данных - PullRequest
0 голосов
/ 31 октября 2018

Вот мои настройки:

Таблица «данные» является (отформатированной) таблицей.

Лист "тире" - это сводная таблица, основанная на листе "данные" и множестве слайсеров.

Таблица "nr" - это а) сводная таблица на основе "данных", отображающая только один nr (количество рабочих).

Лист "nr" - это б) отформатированная таблица, в которой я использую "single nr" для расчета смен в неделю в течение 52 недель.

Лист "nr" - это c) сводная таблица таблицы "смен в неделю" ("PIVnyKIT").

Я хочу иметь возможность выбирать данные из слайсеров на листе "тире" и видеть данные в таблице "смены в неделю" на листе "nr" (я вынимаю график из этой таблицы, который отображаю в лист "тире"). Поскольку сводная таблица не обновляется автоматически при изменении фоновых данных, я открыл свой vba-редактор. Для этого я выбрал «Объекты Microsoft Excel» и лист «nr» и ввел следующий vba-код:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) PivotTables("PIVnyKIT").RefreshTable End Sub

Но по какой-то странной причине это не работает ... Все значения обновляются, как и должно, но сводная таблица "PIVnyKIT" остается неизменной. Пока я не выберу (не нажму) случайную ячейку на листе "nr". Тогда «ПИВныКИТ» неожиданно обновится.

Я провел som-тестирование, и кажется, что этот способ обновления сводной таблицы работает очень хорошо, когда я делаю свои изменения непосредственно в таблицу данных (и нажимаю Enter). Но не тогда, когда таблица данных обновляется сама, основываясь на формулах и выборках слайсера, сделанных на другом листе ...

Кто-то, кто знает, как заставить это работать? Возможно, другой способ сделать это?

1 Ответ

0 голосов
/ 31 октября 2018

Попробуйте:

Private Sub Worksheet_Change(ByVal Target As Range)

   Application.EnableEvents = False
   ThisWorkbook.RefreshAll
   Application.EnableEvents = True

End Sub
...