Таблица PowerPivot использует в области значений 2 экземпляр тех же данных.Как только он отображается как Сумма, и во второй раз эта же мера добавляется и отображается как «% разницы с предыдущим».
Общая идея состоит в том, чтобы автоматизировать форматирование полей данных с помощью пользовательских форматов, которые требуют окраски (таких как "[Color10] #. ## 0; [Красный] - #. ## 0; [Черный] -;"), поскольку они теряются при изменении полей в сводной таблице и не поддерживаются в модели данных Excel.
Когда я использую VBA для перечисления имен этих 2 полей данных, я получаю следующие имена:
[__Xl2].[Measures].[Sum of IMS Volume]
[Measures].[Sum of IMS Volume]
Excel 2019 в Windows.Это код, который ищет правильное форматирование поля данных в таблице Excel:
Sub set_pivottable_number_formatting()
Dim a As Worksheet
Dim i As Integer
Dim pivotformattings As ListObject
Dim field_in_pvtfrmt As Range
Set pivotformattings = ActiveWorkbook.Worksheets("Parameters & Actions").ListObjects("pivot_fields_formatting")
Set a = ActiveWorkbook.ActiveSheet
For Each pvt In a.PivotTables
For Each fld In pvt.DataFields
Set field_in_pvtfrmt = pivotformattings.ListColumns("Pivot field name").DataBodyRange.Find(fld.Name, LookIn:=xlValues, LookAt:=xlWhole)
If Not (field_in_pvtfrmt Is Nothing) Then
'NOTE: FOR SOME CRAZY REASON THE LOGICAL CODE:
' fld.NumberFormat = field_in_pvtfrmt.Offset(0, 1).NumberFormat
' DOES NOT WORK! WITH TRIAL AND ERROR IT IS FOUND THAT FOLLOWING CODE WHICH ADDRESSES THE PIVOT FIELD VIA
' FIELD NAME IN PIVOT TABLE WORKS
pvt.DataFields(fld.Name).NumberFormat = field_in_pvtfrmt.Offset(0, 1).NumberFormat
End If
Next fld
Next pvt
Set a = Nothing
End Sub
Код находит ссылки в таблице Excel для двух имен полей данных из сводной таблицы.Но в обоих случаях, когда числовой формат применяется в коде, применяется только форматирование чисел «первого» поля данных.Таким образом, он выходит за рамки правильного форматирования первого поля и не применяется форматирование второго поля.
Ошибка, функция и как ее обойти?