Динамический диапазон сводной таблицы VBA

#excel #vba #pivot-table

#excel #vba #сводная таблица

Вопрос:

Я пытаюсь создать код VBA для сводной таблицы, строки и столбцы которой могут измениться в будущем. Я использовал приведенный ниже код, но я получаю ошибку времени выполнения 1004 на этапе set ptable. Я также хотел бы добавить сюда код удаления листа «Сводная таблица», если он существует, а затем создать новый, чтобы можно было захватить все данные. Пожалуйста, можете ли вы дать совет.

 Dim Pivot As Worksheet
Dim pCache As PivotCache
Dim pTable As PivotTable
Dim lastRows As Long
Set Pivot = Worksheets.Add
Set pCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, Sheets("CJI Data").Range("A2").CurrentRegion.Address(ReferenceStyle:=xlR1C1))
Set pTable = pCache.CreatePivotTable(Pivot.Range("A1"))
  

Спасибо,
R

Комментарии:

1. Хм, попробуйте поместить это в A3 , оставив место для области «сводный фильтр». Примечание, Pivot это сбивающее с толку название для Worksheet переменной — я бы, вероятно, выбрал sheet , или pivotSheet .

2. Я пробовал A3 раньше, но он не работает. Я внесу изменения в название листа, как было предложено.

Ответ №1:

Зачем вам это нужно.Адрес и R1C1?

 Set PCache = ActiveWorkbook.PivotCaches.Create (xlDatabase, Sheets(“CJI Data”).Range(“A2”).CurrentRegion)
  

Кроме того, нет необходимости удалять таблицу, если данные расширяются, вот почему вы используете динамический диапазон. Просто обновите таблицу.

Комментарии:

1. Тогда это, скорее всего, ваши данные. Если у вас нет непрерывной области в, Sheets("CJI Data") начинающейся в Range("A2") , которая имеет заголовки столбцов и строк, вы получите сообщение об ошибке, в противном случае синтаксис правильный.