Получить значение из PivotItem сводной таблицы без имени таблицы и имени поля, Значение Value возвращает строку типа [Имя таблицы].[Имя поля]&[Значение]
У меня есть сводная таблица. Попытка получить значение из поля дает не значение а строку типа [Имя таблицы].[Имя поля]&[Значение]
Мой код
Код
Sub RefreshListBoxDate()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItemsSet pt = Worksheets("Свод_1").PivotTables("СводнаяТаблица2")
Set pf = pt.PivotFields("[tbBasePLBS].[Дата].[Дата]")
Set pi = pf.PivotItems
ListBox3.List = Array()
For i = 1 To pi.Count
MsgBox CStr(i) & ": " & pi(i).Value & ": Visible is " & CStr(pi(i).Visible)
ListBox3.AddItem
ListBox3.List(i - 1, 0) = pi(i).Value 'Тут я поулчаю не чистое значение а еще имя таблицы и поля, что не нужно.
ListBox3.Selected(i - 1) = pi(i).Visible
Next i
End Sub
Это не совсем сводная. Она построена по данным OLAP или Power Pivot. Так что вы получаете правильное значение поля, так в этой методике они и описываются. Делайте по InStrRev находите крайний справа символ [, а потом Mid для извлечения собственно значения.
Спасибо. Понял, прийдется писать функцию извлечения значения. Я честно говоря не знаю как отличить таблицу OLAP от обычной. И в чем особенности работы с ними через VBA.
Написал функцию. Может кому пригодится. Тема закрыта
Код
Function ExtractValue(iVal As String) As String
Dim iStarPos, iLenght As Integer
iStarPos = InStrRev(iVal, "[") + 1
iLenght = Len(iVal) - iStarPos
ExtractValue = Mid(iVal, iStarPos, iLenght)
End Function