Цвет диаграммы из ячеек с ее данными
Постановка задачи
Хотелось бы, чтобы столбцы на гистограмме (или дольки на круговой и т.п.) автоматически имели тот цвет, который был использован для заливки соответствующих им ячеек с исходными данными:
Предвосхищая удивленно-возмущенные крики отдельных товарищей, надо отметить, что, конечно же, цвет заливки на диаграмме можно менять и вручную (правой кнопкой по столбцу - Формат точки/ряда данных (Format data point/series) и т.д. - никто не спорит. Но на практике случается куча ситуаций, когда проще и удобнее сделать это непосредственно в ячейках с данными, а диаграмма потом должна перекраситься уже автоматически. Попробуйте, например, задать заливку по регионам для столбцов на этой диаграмме:
Думаю, вы поняли идею, да?
Решение
Ничем, кроме как макросом, такое реализовать не получится. Поэтому открываем Редактор Visual Basic с вкладки Разработчик (Developer - Visual Basic Editor) или нажимаем сочетание клавиш Alt+F11, вставляем новый пустой модуль через меню Insert - Module и копируем туда текст вот такого макроса, который и будет делать всю работу:
Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" Exit Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formula m = Split(f, ",") Set r = Range(m(2)) For i = 1 To r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Next i Next j End Sub
Теперь можно закрыть Visual Basic и вернуться в Excel. Использовать созданный макрос очень просто. Выделите диаграмму (область диаграммы, а не область построения, сетку или столбцы!):
и запустите наш макрос с помощью кнопки Макросы на вкладке Разработчик (Developer - Macros) или с помощью сочетания клавиш Alt+F8. В том же окне можно, в случае частого использования, назначить макросу сочетание клавиш с помощью кнопки Параметры (Options).
P.S.
Единственной ложкой дегтя остается невозможность применения подобной функции для случаев, когда цвет ячейкам исходных данных назначается с помощью правил условного форматирования. К сожалению, Visual Basic не имеет встроенных средств для считывания таких цветов. Есть, конечно, определенные "костыли", но работают они не для все случаев и не во всех версиях.
В моем случае - градиентная заливка и при выполнении макроса сегменты круговой диаграммы перекрашиваются несовсем в те цвета, которые необходимо. Не могли бы Вы посмотреть в чем здесь дело?
Если 2010 и выше, то можно.Строку -
Очень классный макрос, спасибо. Но он не работает на pivot таблицах. Там ячейки уже окрашены с помощью conditional formatting, но при выборе значения из фильтра значения столбцов в диаграмме меняется, а цвет нет. Он меняется только когда заново запускаешь макрос.
Это можно настроить?
Ругается на эти строки
c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _
r.Cells(i).DisplayFormat.Interior.Color
В чём может быть причина?
2010 Excel
Уточнить хочу, проблема так и не возможно решить?((
У меня вопрос не совсем по теме, но по вашему примеру
я мучаюсь с эффектом постепенного выцветания, которая у вас представлена в колонках 2013-2011. Я билась с цветом, но сразу все 4 цвета изменить не получается. Подскажите пожалуйста как добиться такого перехода?
Спасибо большое
Мария
Подскажите, есть ли возможность сделать шаблон чтобы определенному значению соответствовал определенный цвет.
Например, яблоки - зелёный, апельсин - оранжевый и т.д. Мне приходится делать очень много диаграмм, где значения (яблоки, апельсины) повторяются и цвет каждый раз ввожу вручную. Помогите, пожалуйста! Интересует именно круговая диаграмма.
После почему-то вот так:
В ячейках применяется условное форматирование.
Николай, подскажите можно ли это исправить и сделать так что бы это работало?
А так же что бы не на значениях (цифры), а на название компаний например.
ООООчень надо )))
спасибо.
В то же время, если поменять линейный график на 3D линейный - начинает работать.
Но нужен именно линейный.
В общем, не понятно "куда копать"(
Ваш макрос вернул мне программисткие навыки и несказанно помог.
Увидел что возник вопрос как сделать так чтобы легенда раскрашивалась в те же самые цвета цвета и решил зарегистрироваться чтобы поделиться лайф хаком. Мне помогло покрасить заголовки таблицы откуда берутся данные для легенды в эти же цвета и вуаля, легенда соответствует значениям