Как сохранить форматирование в сводной диаграмме Excel 2010?


0

У меня есть некоторый код VBA, который запускает SQL-запрос, выгружает его в электронную таблицу Excel 2010 и обновляет 2 сводные таблицы на основе данных. У меня также есть 2 сводные диаграммы, основанные на сводных таблицах, и каждый раз, когда таблицы обновляются, форматирование на диаграммах теряется.

Я следовал инструкциям в Разделе 12.3 этой книги, в которых предлагалось создать собственный тип диаграммы на основе моих предпочтений форматирования и применить его к диаграммам, которые я хочу сохранить таким образом. Эти инструкции прекрасно работают, если я вручную изменяю данные, а затем вручную обновляю сводную таблицу - диаграммы остаются правильно отформатированными. Тем не менее, когда я выполняю этот код:

For Each pt In NewSheet.PivotTables
  pt.RefreshTable
Next

форматирование сразу теряется.

Вот как выглядят данные раньше:

введите описание изображения здесь

и мои тщательно составленные круговые диаграммы:

введите описание изображения здесь

Как только я обновлю данные и обновлю таблицы:

введите описание изображения здесь

Вот что я получаю:

введите описание изображения здесь

Опять же, применение стиля пользовательской диаграммы сохранит форматирование, если оно выполнено вручную, но выполнение кода VBA каким-то образом сбрасывает тип пользовательской диаграммы.


Короткий ответ - не используйте сводные диаграммы. Просто используйте данные сводной таблицы для ввода в стандартные диаграммы (путем прямых ссылок на ячейки или именованных диапазонов).
Дав

1
Да, и другое: пожалуйста, не используйте круговые диаграммы для такого количества точек данных, и, пожалуйста, отбросьте эффект 3D-рамки. Почему? Прочитайте « Спасите пироги на десерт»
teylyn

@teylyn - да, скажи это моему боссу. Реально, у нас обычно только 4-6 элементов, а не 15, для которых я настроил свой шаблон, но она хочет пирог, и она хочет, чтобы он был блестящим и пышным, как и все остальные ...: /
FreeMan

@dav - я видел предложения о том, как это сделать, однако мне нужно автоматизированное решение для создания диаграмм для 20 отчетов, и количество строк будет меняться для каждого. Если у вас есть предложение по созданию хороших диаграмм без лишних строк, которые будут отображаться как нулевые значения (т. Е. Обрабатывать один источник диаграммы с разным количеством строк), пожалуйста, поместите его в ответ! Я включу это в свое решение VBA, дам вам кредит и, возможно, даже куплю вам чашку кофе!
FreeMan,

Ответы:


1

Чтобы достичь этого без использования сводных диаграмм, все, что вам нужно, - это динамический именованный диапазон и простая (если грубо отформатированная) диаграмма.

1) Создайте определенное Имя, используя эту формулу:, Series_A=OFFSET(Sheet!B1,0,0,COUNT(A:A),1)где - Sheet1! B1 относится к вашей первой ячейке счета в сводной таблице (или любой другой ссылке, если вам удобно с OFFSET) - Count (A: A) - это ваш столбец со строкой этикетки

2) Создайте свои диаграммы с сериями = Series_A (и любыми другими, которые вам нужны).

При обновлении сводных таблиц определенные имена будут ссылаться на растягивающиеся / сжимающиеся значения в столбце меток строк и возвращать только значения в столбце подсчета. Не требуется 0, # N / A или вспомогательные столбцы.


Спасибо, Дэв! Меня отвлекли на некоторое время, но как только я вернулся к этому, это сработало отлично! У меня были проблемы с тем, чтобы Excel принял именованный диапазон в качестве источника серии, затем я обнаружил, что (так как диапазон был на другом листе), это SheetName!NamedRangeпоможет. Я думал, NamedRangeчто будет достаточно, так как это было определено с Workbookобластью, но Excel не будет принимать это. Высоко ценится. Так как я не смог запихнуть пару синглов в порт USB, вот ваша чашка, о'Джо !
FreeMan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.