Страницы: 1
RSS
VBA. Определение связанных полей в исходных данных для вычисляемого элемента сводной таблицы
 
Здравствуйте!

По двойному щелчку по элементу, находящемуся в вычисляемом поле сводной, откроется лист со всеми связанными исходными данными.

Как на VBA можно обратиться к этим данным (без промежуточного листа, естественно)? В приложенном файле, например, при выделении в сводной ячейки из зелёной группы получить в жёлтой ячейке значение связанного исходного поля "ID" (отсутствует в самой сводной)?
Изменено: vladjuha - 10.11.2020 17:28:07
 
Добрый день! А чем вызвана такая необходимость?

Как вариант добавить id в сводную и скрыть столбец.
Либо макросом проваливаться в сводную, брать из промежуточного листа данные и макросом же лист удалить.  
 
Да, спасибо, столбец ID не могу в данном случае использовать, т.к. ID уникальный и будет в сводной общая строка множиться на подстроки с ID. Видимо придётся через промежуточный лист.

А необходимость вызвана тем, что в исходной таблице есть столбец для больших текстовых примечаний и в сводной им просто не место - это будет совершенно не читаемо, да и оно для всех значений и не нужно. Другое дело, если юзер нажмёт на заинтересовавшее его значение в сводной, а ему скрипт над таблицей выведет этот самый комментарий.
Изменено: vladjuha - 12.11.2020 12:56:14
 
Доброе время суток
Цитата
vladjuha написал:
Как на VBA можно обратиться к этим данным
Для начало бы не мешало бы определить "этим" это что такое? Если у вас есть доступ к источнику данных сводной (например, этот таблица на листе), то не сложно вычислить, какие значения строк и столбцов сводной (поля группировки) определяют ту подтаблицу в исходной таблице.
Код
Public Sub test()
    Dim pCell As Range, ptCell As PivotCell
    Dim pItem As PivotItem
    Set pCell = ActiveCell
    Set ptCell = pCell.PivotCell
    If ptCell.PivotCellType = xlPivotCellValue Then
        For Each pItem In ptCell.ColumnItems
            Debug.Print "group column name: '" & pItem.Parent.SourceName & "', with value: " & pItem.Value
        Next
        For Each pItem In ptCell.RowItems
            Debug.Print "group row name: '" & pItem.Parent.SourceName & "', with value: " & pItem.Value
        Next
    End If
End Sub
 
Андрей VG, точно, так собрать пазл и можно, спасибо!
Страницы: 1
Наверх