Поля (показатели) сводной таблицы теряют свое форматирование при удалении из сводной таблицы.Вы должны переформатировать их после добавления их обратно в сводную таблицу.Я использую Excel 2019, PowerPivot с моделью данных внутри Excel.
Мне нужно форматирование, которое включает в себя различные цвета для +-0
.Это форматирование: [Color10]0,00%;[Red]-0,00%;[Black]-
(Color10 - это правильный кодированный цвет в Excel для форматирования чисел)
Я пытаюсь настроить макрос, который должен это делать.Я записал макрос.Когда макрос запускается, он «изобретает» свое собственное форматирование и не применяет тот, который я ему дал.
Таким образом, после запуска кода применяется числовой формат [Color10]#.000%;[Red]-#.000%;[Black]-
вместо [Color10]0,00%;[Red]-0,00%;[Black]-
.Обратите внимание, что когда я применяю это желаемое форматирование вручную - оно остается таким.
Кажется, что проблема не связана с сводными таблицами или самим PowerPivot.Та же проблема возникает при попытке сделать
ActiveSheet.Range("F1").NumberFormat = "[Color10]0,00%;[Red]-0,00%;[Black]-"
Это работает , если я вручную применяю желаемое форматирование к ячейке, а затем применяю форматирование из этой ячейки ксводное поле, подобное следующему:
.PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat = ActiveSheet.Range("F1").NumberFormat
Что мне не хватает?
Другие не-макро параметры, которые я пробовал:
- Это не поддерживается в Excelмодель данных (цвета!)
- Это не поддерживается функцией форматирования DAX (цвета!)
- Использование ручного форматирования ячеек даже с установкой поворотного свойства для сохранения форматирования ячеек при обновлении не сохраняетэто когда вы меняете поля в сводной таблице.
- То же самое, если вы пытаетесь использовать ConditionalFormatting
Параметры макроса, которые я пробовал:
в сводном обновлении даже для рабочего листа - Excel регулярно падает (он вызывает процедуру, например, 30 раз, если я оставляю сообщение об ошибке, а затем выдает ошибку; происходит сбой.)
I 'мы удалили "произвольное "пользовательское форматирование, попробовал еще раз, и Excel, похоже, воссоздает то пользовательское форматирование, которое мне не нужно.
Я искал потенциальные escape-символы для знака %
в строке VBAно ничего особенного не пришло, кроме самих двойных кавычек.
Sub set_pivottable_number_formatting()
With ActiveSheet.PivotTables(1)
MsgBox .PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat
.PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat = "[Color10]0,00%;[Red]-0,00%;[Black]-"
MsgBox .PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat
End With
End Sub