#excel #vba #pivot-table
#excel #vba #сводная таблица
Вопрос:
У меня есть большая таблица данных на листе 1 и сводная таблица на листе 2, основанная на листе 1. Я хотел бы иметь возможность переходить от выбранного сводного элемента на листе 2 непосредственно к ячейке на листе 1, из которой получены данные. Пока я просто использую
EID = ActiveCell.PivotTable.PivotFields(1).DataRange.Cells(ActiveCell.PivotCell.PivotRowLine.Position, 1).Text
Set rTarget = Sheet1.Columns(1).Find(EID, lookat:=xlWhole, MatchCase:=True)
Sheet1.activate
rTarget.activate
Что немного запутанно, потому что моя текущая стратегия поиска данных — это уникальный идентификатор в сводных полях (1), но я хочу разрешить пользователю выбирать любую ячейку вдоль строки. Поэтому я должен ссылаться на адрес ячейки в сводных полях (1) в той же строке, а затем искать его в листе 1.
Я бы предпочел избегать использования ячеек.Найти и было интересно, есть ли метод или свойство, которые могли бы позволить мне сделать что-то вроде:
set rTarget = Activecell.PivotItem.SourceDataRange
Где SourceDataRange вернет диапазон ячейки в Sheet1, которая предоставляет данные для pivotitem. Сводная таблица.SourceData возвращает весь диапазон. Я ищу диапазон отдельного сводного элемента.
Существует ли такой метод?
Комментарии:
1. AFAIK в объектной модели такого свойства нет.
2. Как это будет работать, если существует связь 1-2-1 как поворачивается совокупности строк данных? 1-2-1 — это, по сути, таблица. Похоже, вам действительно нужен диапазон детализации, который вы получаете при двойном щелчке по элементу в сводной таблице databodyrange.
3. Я думаю, вам нужно будет написать какой-нибудь пользовательский vba, поскольку я не вижу ничего, перечисленного в методах range или pivotitem .