У меня проблемы с макросом, который должен позволить мне обновлять сводные таблицы и избегать перекрывающегося сообщения об ошибке.Я подумал, что нашел хитрый способ создать видимость этого события, но столкнулся с проблемой с общим источником данных.
У меня есть 5 сводных таблиц (каждая с одним и тем же источником данных: Table1
) в приведенной ниже структуре
Column A
----------
Pivot 1
'Two Blank Rows
Pivot 2
'Two Blank Rows
Pivot 3
'Two Blank Rows
Pivot 4
'Two Blank Rows
Pivot 5
'Two Blank ROws
Макрос предназначен для перемещения Pivot 1
по 6 столбцам, обновляя только эту точку поворота (позволяя ему расширяться или сжиматься столько, сколько необходимо).Затем макрос перемещается Pivot 2
по 6 столбцам и размещает его на две строки ниже первого центра, обновляет только этот элемент и т. Д. Процесс повторяется для всех элементов, а затем я удаляю 6 столбцов, создавая впечатление, что все таблицы вернулись в своиисходная отправная точка, за исключением того, что строки таблицы были соответственно расширены / сжаты, не сталкиваясь с проблемой ERROR: A pivot table cannot overlap another pivot table
.Когда ScreenUpdating
выключен, создается впечатление, что стержни обновляют и динамически корректируют свое положение для расширения / сжатия окружающих таблиц.
Проблема, с которой я сталкиваюсь, заключается в том, чтообновите один свод, остальные 4 автоматически попытаются обновить, что приведет к ошибке перекрытия для других 4 таблиц. Как я могу обновлять только одну сводную таблицу за раз, несмотря на общий сводный кэш?
Я пробовал две строки кода в центре цикла и пытался использовать найденный макросна это ссылка, которая нацелена на разделение общего сводного кэша, что позволяет выполнять независимое обновление.Макрос по этой ссылке просто каждый раз вылетает мой экземпляр excel.
For i = LBound(OTCPvts) To UBound(OTCPvts)
LRow = OTC.Range("O" & OTC.Rows.Count).End(xlUp).Offset(3).Row
OTC.PivotTables(OTCPvts(i)).TableRange2.Cut OTC.Range("M" & LRow)
On Error Resume Next
OTC.PivotTables(OTCPvts(i)).PivotCache.Refresh 'Gives Overlap Error
OTC.PivotTables(OTCPvts(i)).RefreshTable 'Does not refresh/change table
On Error GoTo 0
Next i
Отображение только соответствующего кода - процесс переходит к фильтрации / сортировке перед переходом к Next i
, но все это прекрасно работает