MyTetra Share
Делитесь знаниями!
Как сопоставить цвет точек графика и исходных данных
Время создания: 12.10.2019 20:31
Раздел: Разные закладки - VBA - Excel - Графики
Запись: xintrea/mytetra_db_adgaver_new/master/base/15708843494u022wgi5y/text.html на raw.githubusercontent.com

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

Автор Дмитрий Якушев На чтение3 мин. Просмотров48

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

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

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

Код макроса


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. На последнем этапе, макрос возвращается назад, чтобы получить следующую серию. После того, как мы прошли через все ряды данных в таблице, макрос заканчивается.
 
MyTetra Share v.0.65
Яндекс индекс цитирования