Цвят на диаграма от клетки с нейните данни

Формулиране на проблема

Бих искал колоните на хистограмата (или срезовете на кръговата диаграма и т.н.) автоматично да имат цвета, който е бил използван за запълване на съответните клетки с изходните данни:

Очаквайки изненаданите и възмутени викове на отделни другари, трябва да се отбележи, че, разбира се, цветът на запълването на диаграмата може да се промени и ръчно (щракнете с десния бутон върху колоната - Формат на точка/серия (Форматиране на точка/серия от данни) и т.н. – никой не спори. Но на практика има много ситуации, когато е по-лесно и по-удобно да направите това директно в клетките с данни, след което диаграмата трябва да се пребоядиса автоматично. Опитайте например да зададете запълване по регион за колоните в тази диаграма:

Мисля, че схващаш идеята, нали?

Решение

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

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 Към 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

Оставете коментар