Цвет диаграммы из ячеек с ее данными
Постановка задачи
Хотелось бы, чтобы столбцы на гистограмме (или дольки на круговой и т.п.) автоматически имели тот цвет, который был использован для заливки соответствующих им ячеек с исходными данными:
Предвосхищая удивленно-возмущенные крики отдельных товарищей, надо отметить, что, конечно же, цвет заливки на диаграмме можно менять и вручную (правой кнопкой по столбцу — Формат точки/ряда данных (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 не имеет встроенных средств для считывания таких цветов. Есть, конечно, определенные «костыли», но работают они не для все случаев и не во всех версиях.
Ссылки по теме
- Что такое макросы, как их использовать, куда вставлять код макросов на Visual Basic
- Условное форматирование в Excel 2007-2013
- Новые возможности диаграмм в Excel 2013
Обычно при создании диаграммы по умолчанию используется цвет полосы столбца. Если вам нужно отформатировать цвет с заливкой на каждой панели на основе цветов ячеек, как показано на следующем снимке экрана, как вы могли бы решить эту проблему в Excel?
Раскрасьте диаграмму с одним или несколькими сериями данных в зависимости от цвета ячеек с помощью кодов VBA
Раскрасьте диаграмму с помощью одного или нескольких рядов данных в зависимости от цвета ячеек с помощью удивительной функции
Раскрасьте диаграмму с одним или несколькими сериями данных в зависимости от цвета ячеек с помощью кодов VBA
Раскрасьте диаграмму одной серией данных в зависимости от цвета ячейки
С помощью следующего кода VBA вы можете быстро изменить цвет диаграммы, которая содержит одну серию данных на основе исходного цвета значений ячеек, сделайте следующее:
1. Сначала создайте гистограмму или столбчатую диаграмму, как показано на следующем снимке экрана (выберите данные и нажмите Вставить > Вставить столбец или гистограмму):
2. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
3. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.
Код VBA: цветные полосы диаграммы с одной серией данных в зависимости от цвета ячейки:
Sub ColorChartColumnsbyCellColor()
'Updateby Extendoffice
Dim xChart As Chart
Dim I As Long, xRows As Long
Dim xRg As Range, xCell As Range
On Error Resume Next
Set xChart = ActiveSheet.ChartObjects("Chart 1").Chart
If xChart Is Nothing Then Exit Sub
With xChart.SeriesCollection(1)
Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(1), "!")(1))
xRows = xRg.Rows.Count
Set xRg = xRg(1)
For I = 1 To xRows
.Points(I).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xRg.Offset(I - 1, 0).Interior.ColorIndex)
Next
End With
End Sub
Внимание: В приведенном выше коде Диаграмма 1 — это имя диаграммы, которое вы хотите использовать, измените его на свое.
4. После вставки вышеуказанного кода нажмите F5 ключ для запуска этого кода, и цвет полос диаграммы был изменен на основе исходного цвета ячейки, см. снимок экрана:
Раскрасьте диаграмму с несколькими рядами данных в зависимости от цвета ячейки
Если ваша диаграмма содержит несколько рядов данных, примените следующий код VBA:
1. Создайте столбчатую или столбчатую диаграмму, содержащую несколько рядов данных, как показано на следующем снимке экрана:
2. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
3. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.
Код VBA: цветные полосы диаграммы с несколькими рядами данных в зависимости от цвета ячейки:
Sub CellColorsToChart()
'Updateby Extendoffice
Dim xChart As Chart
Dim I As Long, J As Long
Dim xRowsOrCols As Long, xSCount As Long
Dim xRg As Range, xCell As Range
On Error Resume Next
Set xChart = ActiveSheet.ChartObjects("Chart 1").Chart
If xChart Is Nothing Then Exit Sub
xSCount = xChart.SeriesCollection.Count
For I = 1 To xSCount
J = 1
With xChart.SeriesCollection(I)
Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(2), "!")(1))
If xSCount > 4 Then
xRowsOrCols = xRg.Columns.Count
Else
xRowsOrCols = xRg.Rows.Count
End If
For Each xCell In xRg
.Points(J).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
.Points(J).Format.Line.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
J = J + 1
Next
End With
Next
End Sub
4, Затем нажмите F5 нажмите клавишу для запуска этого кода, полосы диаграммы сразу заполняются исходным цветом ячеек, см. снимок экрана:
Ноты:
1. В приведенном выше коде Диаграмма 1 — это имя диаграммы, которое вы хотите использовать, измените его на свое.
2. Этот код также можно применить к линейному графику.
Раскрасьте диаграмму с помощью одного или нескольких рядов данных в зависимости от цвета ячеек с помощью удивительной функции
Используя приведенные выше коды, цвета диаграммы не всегда будут совпадать с цветом ячейки, чтобы решить эту проблему, здесь я представлю полезный инструмент — Изменить цвет диаграммы в соответствии с цветом ячейки of Kutools for Excel, с помощью этой удобной функции вы можете быстро и легко раскрасить диаграмму в зависимости от цвета ячейки.
Примечание: Чтобы применить это Изменить цвет диаграммы в соответствии с цветом ячейки, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Сначала вставьте диаграмму, которую вы хотите использовать, затем выберите диаграмму, затем нажмите Кутулс > Графики > Инструменты для диаграмм > Изменить цвет диаграммы в соответствии с цветом ячейки, см. снимок экрана:
2. Затем появится диалоговое окно, нажмите OK кнопку.
3. Теперь выбранная вами диаграмма окрашена в соответствии с цветами ячеек, как показано на скриншотах ниже:
Раскрасьте диаграмму одной серией данных в зависимости от цвета ячейки
Раскрасьте диаграмму с несколькими рядами данных в зависимости от цвета ячейки
Скачать и бесплатную пробную версию Kutools for Excel Сейчас !
Дополнительные статьи о диаграммах:
- Создание гистограммы, наложенной на другую гистограмму в Excel
- Когда мы создаем кластеризованную столбчатую или столбчатую диаграмму с двумя рядами данных, эти две полосы ряда данных будут отображаться рядом. Но иногда нам нужно использовать наложенную или перекрывающуюся гистограмму, чтобы более четко сравнить две серии данных. В этой статье я расскажу о том, как создать перекрывающуюся гистограмму в Excel.
- Копирование одного формата диаграммы в другой в Excel
- Предположим, что на вашем листе есть несколько различных типов диаграмм, вы отформатировали одну диаграмму в соответствии с вашими потребностями и теперь хотите применить это форматирование к другим диаграммам. Конечно, вы можете форматировать другие вручную один за другим, но это займет много времени, есть ли какие-нибудь быстрые или удобные способы скопировать один формат диаграммы в другие в Excel?
- Выделите максимальные и минимальные точки данных на диаграмме
- Если у вас есть столбчатая диаграмма, на которой вы хотите выделить самые высокие или самые маленькие точки данных разными цветами, чтобы выделить их, как показано на следующем снимке экрана. Как вы могли определить самые высокие и самые маленькие значения, а затем быстро выделить точки данных на диаграмме?
- Создать шаговую диаграмму в Excel
- Пошаговая диаграмма используется для отображения изменений, происходящих с нерегулярными интервалами, это расширенная версия линейной диаграммы. Но прямого способа создать его в Excel нет. В этой статье я расскажу о том, как шаг за шагом создать пошаговую диаграмму на листе Excel.
- Создать гистограмму выполнения в Excel
- В Excel гистограмма выполнения может помочь вам отслеживать прогресс в достижении цели, как показано на следующем снимке экрана. Но как создать гистограмму выполнения на листе Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
MulTEx »
23 Август 2015 8125 просмотров
Цвет ряда из ячеек
Данная функция является частью надстройки MulTEx
Вызов команды:
MulTEx -группа Ячейки/Диапазоны —Диаграммы —Цвет ряда из ячеек
По умолчанию при создании диаграмм цвет рядов диаграммы назначается автоматически:
Часто этого достаточно, но иногда нагляднее и более выгодно диаграмма выглядит, если ряды данных(или отрезки линий) имеют тот же цвет, что и цвет ячеек, на основе которых диаграмма построена:
Особенно это актуально для типа гистограммы, где при построении диаграммы на основании одного столбца данных все столбцы диаграммы имеют один цвет, хотя в исходных данных все ячейки имеют разные цвета. Вполне логично было бы для каждого столбца назначить свой цвет. Если рядов 3 или 5, то сделать руками это несложно через Формат ряда данных. Но если рядов больше 10, то такая простая операция превратится в рутинное неинтересное занятие. Команда Цвет ряда из ячеек в один клик назначит рядам те цвета, в которые окрашены ячейки, на основе которых построена диаграмма. Для этого достаточно выделить диаграмму и выполнить команду Цвет ряда из ячеек.
Команда применима практически для любого типа диаграмм: график, гистограмма, круговая, линейчатая, точечная, кольцевая, пузырьковая. Невозможно применить данную команду к типам диаграмм: Лепестковая, С областями, Биржевая, а так же команда может работать некорректно со смешанными типами диаграмм.
Примечание: При использовании команды в 2010 Excel и выше команда так же корректно будет работать с ячейками, окрашенными при помощи Условного форматирования. В 2007 Excel команда будет использовать реальные цвета заливки и не будет учитывать Условное форматирование.
Так же, при изменении цвета рядов таким способом цвета для легенды в большинстве случаев не будут изменены. Хоть в большинстве случаев это и не критично, это следует учитывать.
Расскажи друзьям, если статья оказалась полезной:
Видеоинструкции по использованию надстройки MulTEx
Skip to content
Как сопоставить цвет диаграммы и исходных данных
На чтение 4 мин. Просмотров 2.5k.
Что делает макрос: При создании информационной панели, вы можете иметь определенные цветовые схемы для различных типов данных. Например, вы можете захотеть, чтобы Северный регион всегда появлялся в определенном цвете, или вы можете захотеть, чтобы некоторые продукты имели цвет товарного знака. Макрос позволяет автоматически менять цвета графика в соответствии с цветом исходного диапазона. Идея заключается в том, что вы можете сопоставить цвет диаграммы и исходных данных, взяв цветовой код ячейки в диапазоне источника, а затем применить те же цвета для каждой соответствующей диаграммы серии. Рисунок дает представление о том, как она работает.
Этот макрос не может захватить цвета, которые были применены с помощью условного форматирования или цвета умных таблиц.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
Все карты имеют объект SeriesCollection, который содержит различные серии данных. В этом макросе, мы выполняем цикл через все серии.
В этом случае мы устанавливаем цвет на цвет диапазона источника. Мы определяем диапазон источника для каждой серии и оцениваем формулу. Формула серия содержит адрес диапазона исходных данных. Проходя этот адрес объекта диапазона, мы можем захватить точный
цвет клеток, а затем использовать его в графике
Код макроса
Sub SopostavitCvetDiagrammiIIshodnihDannih() 'Шаг 1: Объявляем переменные Dim oChart As Chart Dim MySeries As Series Dim FormulaSplit As Variant Dim SourceRangeColor As Long 'Шаг 2: Наведите курсор на активный график On Error Resume Next Set oChart = ActiveChart 'Шаг 3: Выход не был выбран ни один график If oChart Is Nothing Then MsgBox "График не выбран." Exit Sub End If 'Шаг 4: Цикл через серию диаграмм For Each MySeries In oChart.SeriesCollection 'Шаг 5: Получить диапазон исходных данных для целевой серии FormulaSplit = Split(MySeries.Formula, ",")(2) 'Шаг 6: Захват цвета в первой ячейке SourceRangeColor = Range(FormulaSplit).Item(1).Interior.Color 'Шаг 7: Применить окраску On Error Resume Next MySeries.Format.Line.ForeColor.RGB = SourceRangeColor MySeries.Format.Line.BackColor.RGB = SourceRangeColor MySeries.Format.Fill.ForeColor.RGB = SourceRangeColor If Not MySeries.MarkerStyle = xlMarkerStyleNone Then MySeries.MarkerBackgroundColor = SourceRangeColor MySeries.MarkerForegroundColor = SourceRangeColor End If 'Шаг 8: Переход к следующей серии Next MySeries End Sub
Как этот код работает
- Шаг 1 объявляет четыре переменные. Мы используем oChart в качестве контейнера памяти для нашего графика, MySeries как контейнер памяти для каждой серии в нашей диаграмме, FormulaSplit для захвата и сохранения диапазона исходных данных и SourceRangeColor для захвата и хранения индекса цвета исходного диапазона.
- Этот макрос разработан так, что мы выводим целевой график на основе выбора графика. Другими словами, для запуска этого макроса должна быть выбрана диаграмма. Предполагается, что мы хотим выполнить действие макроса на графике, на котором мы щелкнули. На шаге 2 мы устанавливаем переменную oChart в ActiveChart. Если диаграмма не выбрана, то выдается ошибка. Именно поэтому мы используем On Error Resume Next Statement. Он говорит Excel продолжить макрос, если есть ошибка.
- Шаг 3 проверяет, заполняется ли переменная oChart объект диаграммы. Если переменная oChart устанавливается в Nothing, ни один график не был выбран перед запуском макроса. Если это так, то мы говорим пользователю в окне сообщения, а затем выходим из процедуры.
- Шаг 4 запускает цикл через все активные графики SeriesCollection. Каждая диаграмма имеет формулу серии. Формула серии содержит ссылки на таблицу, указывая на ячейки, используемые для её создания. Типичная серия формула выглядит следующим образом:
= SERIES (Лист1 $ F $ 6, Лист1 $ D $ 7:! $ D $ 10, Лист1 $ F $ 7: $ F $ 10,2)
Следует отметить, что существуют три различных диапазона в формуле. Первая точка диапазона на имена серии, вторая точка диапазона на этикетка данных серии, а точки третьего диапазона — это значения данных серии. - Шаг 5 использует функцию Split, чтобы извлечь из диапазона значения рядов данных.
- Шаг 6 захватывает индекс цвета первой ячейки в диапазоне исходных данных. Мы предполагаем, что первая ячейка будет отформатирована так же, как и все остальные части диапазона.
- После того, как у нас есть индекс цвета, мы можем применить цвет к различным свойствам серии.
- На последнем этапе, мы делаем цикл, чтобы получить следующую серию. После того, как мы прошли через все ряды данных в таблице, макрос заканчивается.
Как использовать
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
Сотавление графика по цвету закрашено ячейки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |