Цвета диаграммы сводной таблицы - Советы по Excel

Содержание

Шари отправляет на этой неделе вопрос Excel.

Мне не удалось найти ответ на этот вопрос в нашем ИТ-отделе, файлах справки Excel или онлайн-справке Microsoft Excel, и я надеюсь, что вы можете помочь.

Я анализирую данные Excel за период двадцати лет, и мне нужно составлять круговые диаграммы Excel на каждый год. Диаграммы Excel основаны на сводной таблице (или сводной диаграмме в Excel 2000) с годом в качестве поля страницы. Проблема в том, что не все годы содержат одни и те же элементы, поэтому каждая диаграмма Excel будет использовать разные цвета для одного и того же кусок пирога.

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

MrExcel впервые опробовал сводную диаграмму. Сводные диаграммы - очень эффективный способ создания диаграммы для нескольких различных сценариев данных, но у них есть этот досадный недостаток. Я установил сводную таблицу, указав год класса как строку, год как страницу. Я попросил год класса отсортировать по убыванию баллов. По мере того как вы меняете сводную диаграмму из года в год, цвета секторов, связанных с первокурсником, будут меняться. В некоторые годы есть члены из всех четырех классов, в другие годы есть члены только из трех классов.

Пример сводной диаграммы

Excel применяет порядок цветов по умолчанию к каждому фрагменту, поэтому соответствующие цвета будут меняться от года к году. Я вижу, как мой менеджер с отвращением качает головой, когда я протягиваю ему эти диаграммы.

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

Пример сводной диаграммы

Excel использовал указанные выше цвета для 1990 года, но в 1991 году цвета меняются по мере изменения количества элементов и их последовательности:

Следующий макрос жестко запрограммирован для конкретного примера Шари, где у нее есть возможные значения Freshman, Sophomore, Junior и Senior. Добавляя дополнительные операторы Case с разными цветовыми индексами, вы можете настроить это в соответствии с вашей конкретной ситуацией.

Sub ColorPieSlices() ' Copyright 1999.com ' This macro will re-color the pie slices in a chart ' So that slices for a specific category are similarly colored ' Select the chart before calling the macro ' ' Find the number of pie slices in this chart NumPoints = ActiveChart.SeriesCollection(1).Points.Count ' Loop through each pie slice For x = 1 To NumPoints ' Save the label currently attached to this slice If ActiveChart.SeriesCollection(1). _ Points(x).HasDataLabel = True Then SavePtLabel = ActiveChart.SeriesCollection(1) _ .Points(x).DataLabel.Text Else SavePtLabel = "" End If ' Assign a new data label of just the point name ActiveChart.SeriesCollection(1).Points(x).ApplyDataLabels Type:= _ xlDataLabelsShowLabel, AutoText:=True ThisPt = ActiveChart.SeriesCollection(1).Points(x).DataLabel.Text ' Based on the label of this slice, set the color Select Case ThisPt Case "Freshman" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 3 Case "Sophomore" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 4 Case "Junior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 5 Case "Senior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 6 Case Else ' Add code here to handle an unexpected label End Select ' Return the label to it's original pre-macro state ActiveChart.SeriesCollection(1). _ Points(x).DataLabel.Text = SavePtLabel Next x End Sub

Запустите редактор VB с помощью alt-F11. Делаем Insert - Module. Вставить процедуру. Введите ColorPieSlices в качестве имени и нажмите OK. Введите указанный выше макрос.

Чтобы облегчить жизнь, назначьте макрос ярлыку в Excel. В Excel сделайте Инструменты - Макрос. Выделите ColorPieSlices и нажмите кнопку параметров. В поле сочетания клавиш введите букву «d». Нажмите «ОК» и закройте диалоговое окно «Макрос», щелкнув «x» в правом верхнем углу. Теперь, после того как вы измените свою сводную диаграмму, вы можете нажать Ctrl + D, чтобы перекрасить сектора круговой диаграммы в желаемый цветовой набор.

Интересные статьи...