Цвет диаграммы из ячеек с ее данными

Постановка задачи

Я бы хотел, чтобы столбцы гистограммы (или срезы круговой диаграммы и т. д.) автоматически имели цвет, который использовался для заполнения соответствующих ячеек исходными данными:

Предвидя удивленные и возмущенные крики отдельных товарищей, следует отметить, что, конечно, цвет заливки на диаграмме можно изменить и вручную (щелкнуть правой кнопкой мыши по столбцу – Формат точки/серии (Формат точки/серии данных) и т. д. – никто не спорит. Но на практике встречается масса ситуаций, когда проще и удобнее сделать это непосредственно в ячейках с данными, а потом диаграмма должна перерисовываться автоматически. Попробуйте, например, задать заливку по регионам для столбцов на этой диаграмме:

Думаю, вы поняли, правда?

Решения

Ничто, кроме макроса, не может этого сделать. Поэтому мы открываем Редактор Visual Basic на вкладке разработчик (Разработчик — редактор Visual Basic) или нажмите сочетание клавиш Alt + F11, вставляем новый пустой модуль через меню Вставка – Модуль и скопируйте туда текст такого макроса, который выполнит всю работу:

Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Тогда MsgBox "Сначала выделите диаграмму!" Выход из подконца, если Set c = ActiveChart Для j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formula m = Split(f, ",") Set r = Range(m(2)) Для 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. Использовать созданный макрос очень просто. Выберите диаграмму (область диаграммы, а не область графика, сетку или столбцы!):

и запускаем наш макрос кнопкой Макрос таб разработчик (Разработчик — Макросы) или с помощью сочетания клавиш Alt + F8. В этом же окне в случае частого использования можно назначить макросу сочетание клавиш с помощью кнопки параметры (Параметры).

PS

Единственная ложка дегтя — невозможность использования подобной функции для случаев, когда цвет присваивается ячейкам исходных данных с помощью правил условного форматирования. К сожалению, в Visual Basic нет встроенного инструмента для чтения этих цветов. Есть, конечно, определенные «костыли», но они работают не во всех случаях и не во всех вариантах.

  • Что такое макросы, как их использовать, куда вставлять код макроса в Visual Basic
  • Условное форматирование в Excel 2007–2013.
  • Что нового в диаграммах в Excel 2013

Оставьте комментарий