выбор поля из сводной таблицы с помощью макроса vba - PullRequest
1 голос
/ 16 апреля 2019

Я создал сводную таблицу, используя vba. Мне нужна помощь с пониманием нижеследующих пунктов.

1: я хочу выбрать (скопировать) значения с помощью определенных фильтров (например: базовая цена для типа инструмента = OPTCUR, символ = GBPUSD). В основном альтернатива VBA для формулы

GETPIVOTDATA("Underlying_price",$C$4,"Instrument Type","OPTCUR","Symbol","GBPUSD")

2: Я хочу установить «show detail = True», не зная подробностей ячейки, но критерии, как указано выше.

3: когда мы устанавливаем «show detail = True», открывается новый лист. я хочу присвоить этот лист переменной типа листа.

ниже - SS моей сводной таблицы. и TableName: = "My_Pivot"

enter image description here

Ответы [ 2 ]

3 голосов
/ 24 апреля 2019

Вы получаете соответствующую ячейку с PivotTable.GetPivotData
Новый лист с деталями этой ячейки обозначен Range.ShowDetail = True.
Сразу после этого новый ActiveSheet является желаемым.

Вот функция для получения требуемого рабочего листа с подробной информацией для указанного поля данных:

Private Function GetDetailSheet(pt As PivotTable, Val1 As String, Val2 As String) As Worksheet
    Dim myCell As Range
    With pt
        Set myCell = .GetPivotData(.DataFields(1).Name, _
            .RowFields(1).Name, Val1, _
            .RowFields(2).Name, Val2)
    End With
    myCell.ShowDetail = True
    Set GetDetailSheet = ActiveSheet
End Function

Может использоваться следующим образом:

Private Sub Test()
    Dim ws as Worksheet
    Set ws = GetDetailSheet(ActiveSheet.PivotTables("My_Pivot"), "OPTCUR", "GBPUSD")
    ws.Name = "Details OPTCUR GBPUSD"
End Sub
0 голосов
/ 29 апреля 2019

Если вы не хотите использовать (hideos) GETPIVOTDATA, есть решение для вас!Это называется CUBEVALUE.Это немного сложно освоить, но как только вы это сделаете, вы получите отчеты и сводную таблицу, чтобы перейти на совершенно новый уровень.См. Здесь: https://www.excelcampus.com/cubevalue-formulas/
Да, это длинная статья, но она определенно стоит усилий, поскольку она позволит вам указать на конкретную точку данных , а не на конкретную ячейку.

После освоения добавление кода VBA к событию «измененной» ячейки и изменение состояния видимости определенного листа занимает всего несколько минут.

...