Как сопоставить цвет точек графика и исходных данных

Что делает макрос: Макрос помогает сопоставить цвет точек графика и исходных данных, заставляя каждую точку диаграммы применить те же цвета, как в их соответствующих диапазонах источника данных.

Как макрос работает

В этом случае мы устанавливаем цвет на цвет диапазона источника. Мы определяем диапазон источника для каждой серии, оценивая ее формулу серии. Формула серии содержит адрес диапазона исходных данных. Проходя этот адрес объекта диапазона, мы можем захватить точный цвет ячеек, а затем использовать его для цвета серии.

Код макроса

Sub SopostavitCvetTochekCvetovoiDiagrammiIIshodnihDannih()

'Шаг 1: Объявляем переменные
Dim oChart As Chart
Dim MySeries As Series
Dim i As Integer
Dim dValues As Variant
Dim FormulaSplit As String

'Шаг 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: Захват значений серии
    dValues = MySeries.Values

    'Шаг 7: Перебрать значения серий и установить цвет
    For i = 1 To UBound(dValues)
        MySeries.Points(i).Interior.Color = _
        Range(FormulaSplit).Cells(i).Interior.Color
    Next i

    'Шаг 8: Перейти к следующей серии
Next MySeries

End Sub

Как этот код работает

  1. Шаг 1 объявляет пять переменных. Мы используем oChart в качестве контейнера памяти для нашего графика, MySeries как контейнер памяти для каждой серии в нашем графике, dValues в сочетании с I для перебора значений в серии, и FormulaSplit для захвата и сохранения диапазона исходных данных.
  2. Эта макрокоманда разработана таким образом, что график должен быть выбран для запуска макроса. На шаге 2 мы устанавливаем переменную oChart в ActiveChart. Если диаграмма не выбрана, то выдается ошибка. Именно поэтому мы используем On Error Resume Next Statement. Он говорит Excel продолжить макро, если есть ошибка.
  3. На шаге 3, мы проверяем, заполняется ли переменная oChart объекта диаграммы. Если переменная oChart не видит выбранного графика, то мы говорим пользователю в окне сообщения об ошибке, а затем выходим из процедуры.
  4. Шаг 4 запускает цикл через все активные графики SeriesCollection.
  5. Каждая серия диаграмма имеет формулу серии. Формула серии содержит ссылки на таблицу, указывая на ячейки, используемые для её создания. Типичная серия формулы выглядит следующим образом:
    = SERIES (Лист1 $ F $ 6, Лист1 $ D $ 7:! $ D $ 10, Лист1 $ F $ 7: $ F $ 10,2)
    Шаг 5 использует функцию Split, чтобы извлечь диапазон значений данных серии.
  6. Используем переменную dValues для того, чтобы захватить массив значений данных в активной серии.
  7. Шаг 7 начинается цикл по точкам данных в серии. Это делается путем установки счетчика от 1 до числа точек данных в dValues. Когда начинается цикл, он инициирует с номером 1, пока не достигнет числа, равного максимальному числу точек данных в серии. По мере того, как цикл макроса использует I, как номер индекса для сбора данных, эффективно подвергая свойствам каждую точку данных, мы устанавливаем индекс цвета точки
    данных в соответствии с индексом цвета соответствующей исходной ячейки.
  8. На последнем этапе, макрос возвращается назад, чтобы получить следующую серию. После того, как мы прошли через все ряды данных в таблице, макрос заканчивается.

Как использовать

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Оцените статью
Добавить комментарий