Цвет диаграммы из ячеек с ее данными
Постановка задачи
Хотелось бы, чтобы столбцы на гистограмме (или дольки на круговой и т.п.) автоматически имели тот цвет, который был использован для заливки соответствующих им ячеек с исходными данными:
Предвосхищая удивленно-возмущенные крики отдельных товарищей, надо отметить, что, конечно же, цвет заливки на диаграмме можно менять и вручную (правой кнопкой по столбцу — Формат точки/ряда данных (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
У нас есть диапазон A1: B4, который содержит исходные данные, показанные ниже:
Вы можете создать диаграмму с помощью метода ChartObjects.Add. Следующий код создаст на листе встроенную диаграмму:
12345678 | Sub CreateEmbeddedChartUsingChartObject ()Уменьшить размер встроенной диаграммы как ChartObjectУстановите embeddedchart = Sheets («Sheet1»). ChartObjects.Add (Left: = 180, Width: = 300, Top: = 7, Height: = 200)embeddedchart.Chart.SetSourceData Источник: = Sheets («Sheet1»). Range («A1: B4»)Конец подписки |
Результат:
Вы также можете создать диаграмму с помощью метода Shapes.AddChart. Следующий код создаст на листе встроенную диаграмму:
12345678 | Подложка CreateEmbeddedChartUsingShapesAddChart ()Заменить встроенную диаграмму как фигуруУстановите embeddedchart = Sheets («Sheet1»). Shapes.AddChartembeddedchart.Chart.SetSourceData Source: = Sheets («Sheet1»). Range («A1: B4»)Конец подписки |
Указание типа диаграммы с помощью VBA
У нас есть диапазон A1: B5, который содержит исходные данные, показанные ниже:
Вы можете указать тип диаграммы, используя свойство ChartType. Следующий код создаст круговую диаграмму на листе, поскольку для свойства ChartType задано значение xlPie:
123456789 | Sub SpecifyAChartType ()Dim chrt как ChartObjectУстановите chrt = Sheets («Sheet1»). ChartObjects.Add (Left: = 180, Width: = 270, Top: = 7, Height: = 210)chrt.Chart.SetSourceData Source: = Sheets («Sheet1»). Range («A1: B5»)chrt.Chart.ChartType = xlPieКонец подписки |
Результат:
Вот некоторые из популярных типов диаграмм, которые обычно указываются, хотя есть и другие:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Добавление заголовка диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Сначала необходимо добавить заголовок диаграммы с помощью метода Chart.SetElement, а затем указать текст заголовка диаграммы, установив свойство ChartTitle.Text.
В следующем коде показано, как добавить заголовок диаграммы и указать текст заголовка активной диаграммы:
123456 | Sub AddingAndSettingAChartTitle ()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = «Продажи продукта»Конец подписки |
Результат:
Примечание. Сначала необходимо выбрать диаграмму, чтобы сделать ее активной, чтобы можно было использовать объект ActiveChart в своем коде.
Изменение цвета фона диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить цвет фона всей диаграммы, установив свойство RGB объекта FillFormat объекта ChartArea. Следующий код придаст диаграмме светло-оранжевый цвет фона:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)Конец подписки |
Результат:
Вы также можете изменить цвет фона всей диаграммы, установив свойство ColorIndex объекта Interior объекта ChartArea. Следующий код придаст диаграмме оранжевый цвет фона:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Interior.ColorIndex = 40Конец подписки |
Результат:
Примечание. Свойство ColorIndex позволяет указать цвет на основе значения от 1 до 56, взятого из предустановленной палитры, чтобы увидеть, какие значения представляют разные цвета, щелкните здесь.
Изменение цвета области графика диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить цвет фона только области построения диаграммы, установив свойство RGB объекта FillFormat объекта PlotArea. Следующий код придаст области построения диаграммы светло-зеленый цвет фона:
12345 | Sub AddingABackgroundColorToThePlotArea ()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB (208, 254, 202)Конец подписки |
Результат:
Добавление легенды с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить легенду с помощью метода Chart.SetElement. Следующий код добавляет легенду слева от диаграммы:
12345 | Подложка AddingALegend ()ActiveChart.SetElement (msoElementLegendLeft)Конец подписки |
Результат:
Вы можете указать положение легенды следующими способами:
- msoElementLegendLeft — отображает легенду в левой части диаграммы.
- msoElementLegendLeftOverlay — накладывает легенду на левую часть диаграммы.
- msoElementLegendRight — отображает легенду в правой части диаграммы.
- msoElementLegendRightOverlay — накладывает легенду на правую часть диаграммы.
- msoElementLegendBottom — отображает легенду внизу диаграммы.
- msoElementLegendTop — отображает легенду вверху диаграммы.
Добавление меток данных с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавлять метки данных с помощью метода Chart.SetElement. Следующий код добавляет метки данных на внутренний конец диаграммы:
12345 | Sub AddingADataLabels ()ActiveChart.SetElement msoElementDataLabelInsideEndКонец подписки |
Результат:
Вы можете указать расположение меток данных следующими способами:
- msoElementDataLabelShow — отображать метки данных.
- msoElementDataLabelRight — отображает метки данных в правой части диаграммы.
- msoElementDataLabelLeft — отображает метки данных в левой части диаграммы.
- msoElementDataLabelTop — отображает метки данных вверху диаграммы.
- msoElementDataLabelBestFit — определяет наилучшее соответствие.
- msoElementDataLabelBottom — отображает метки данных внизу диаграммы.
- msoElementDataLabelCallout — отображает метки данных в виде выноски.
- msoElementDataLabelCenter — отображает метки данных в центре.
- msoElementDataLabelInsideBase — отображает метки данных на внутренней основе.
- msoElementDataLabelOutSideEnd — отображает метки данных на внешнем конце диаграммы.
- msoElementDataLabelInsideEnd — отображает метки данных на внутреннем конце диаграммы.
Добавление оси X и заголовка в VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить заголовок оси X и оси X с помощью метода Chart.SetElement. Следующий код добавляет к диаграмме заголовки осей X и X:
123456789 | Sub AddingAnXAxisandXTitle ()С ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalКонец сКонец подписки |
Результат:
Добавление оси Y и заголовка в VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить заголовок оси Y и оси Y с помощью метода Chart.SetElement. Следующий код добавляет к диаграмме заголовки по осям Y и Y:
1234567 | Дополнительное добавлениеAYAxisandYTitle ()С ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalКонец сКонец подписки |
Результат:
Изменение числового формата оси
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить числовой формат оси. Следующий код изменяет числовой формат оси Y на валюту:
12345 | Sub ChangingTheNumberFormat ()ActiveChart.Axes (xlValue) .TickLabels.NumberFormat = «$ #, ## 0.00″Конец подписки |
Результат:
Изменение форматирования шрифта на диаграмме
У нас на листе выбрана следующая диаграмма, как показано ниже:
Вы можете изменить форматирование всего шрифта диаграммы, обратившись к объекту шрифта и изменив его имя, толщину и размер шрифта. Следующий код изменяет тип, вес и размер шрифта всей диаграммы.
12345678910 | Sub ChangingTheFontFormatting ()С ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = «Times New Roman».ChartArea.Format.TextFrame2.TextRange.Font.Bold = Истина.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Конец с |
Результат:
Удаление диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Мы можем использовать следующий код, чтобы удалить эту диаграмму:
12345 | Sub DeletingTheChart ()ActiveChart.Parent.DeleteКонец подписки |
Ссылаясь на коллекцию ChartObjects
Вы можете получить доступ ко всем встроенным диаграммам на листе или в книге, обратившись к коллекции ChartObjects. У нас есть две диаграммы на одном листе, показанном ниже:
Мы обратимся к коллекции ChartObjects, чтобы дать обеим диаграммам на листе одинаковую высоту и ширину, удалить линии сетки, сделать цвет фона одинаковым, дать диаграммам одинаковый цвет области графика и сделать одинаковый цвет линии области графика. цвет:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet ()Dim cht As ChartObjectДля каждого cht в ActiveSheet.ChartObjectscht.Height = 144,85cht.Width = 246,61cht.Chart.Axes (xlValue) .MajorGridlines.Deletecht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB (242, 242, 242)cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB (234, 234, 234)cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB (18, 97, 172)Следующий чтКонец подписки |
Результат:
Вставка диаграммы на отдельный лист диаграммы
У нас есть диапазон A1: B6, который содержит исходные данные, показанные ниже:
Вы можете создать диаграмму, используя метод Charts.Add. Следующий код создаст диаграмму на собственном листе диаграммы:
123456 | Sub InsertingAChartOnItsOwnChartSheet ()Листы («Лист1»). Диапазон («A1: B6»). ВыберитеCharts.AddКонец подписки |
Результат:
См. Некоторые из наших других руководств по построению графиков:
Графики в Excel
Создайте гистограмму в VBA
In this Article
- Creating an Embedded Chart Using VBA
- Specifying a Chart Type Using VBA
- Adding a Chart Title Using VBA
- Changing the Chart Background Color Using VBA
- Changing the Chart Plot Area Color Using VBA
- Adding a Legend Using VBA
- Adding Data Labels Using VBA
- Adding an X-axis and Title in VBA
- Adding a Y-axis and Title in VBA
- Changing the Number Format of An Axis
- Changing the Formatting of the Font in a Chart
- Deleting a Chart Using VBA
- Referring to the ChartObjects Collection
- Inserting a Chart on Its Own Chart Sheet
Excel charts and graphs are used to visually display data. In this tutorial, we are going to cover how to use VBA to create and manipulate charts and chart elements.
You can create embedded charts in a worksheet or charts on their own chart sheets.
Creating an Embedded Chart Using VBA
We have the range A1:B4 which contains the source data, shown below:
You can create a chart using the ChartObjects.Add method. The following code will create an embedded chart on the worksheet:
Sub CreateEmbeddedChartUsingChartObject()
Dim embeddedchart As ChartObject
Set embeddedchart = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")
End Sub
The result is:
You can also create a chart using the Shapes.AddChart method. The following code will create an embedded chart on the worksheet:
Sub CreateEmbeddedChartUsingShapesAddChart()
Dim embeddedchart As Shape
Set embeddedchart = Sheets("Sheet1").Shapes.AddChart
embeddedchart.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")
End Sub
Specifying a Chart Type Using VBA
We have the range A1:B5 which contains the source data, shown below:
You can specify a chart type using the ChartType Property. The following code will create a pie chart on the worksheet since the ChartType Property has been set to xlPie:
Sub SpecifyAChartType()
Dim chrt As ChartObject
Set chrt = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)
chrt.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")
chrt.Chart.ChartType = xlPie
End Sub
The result is:
These are some of the popular chart types that are usually specified, although there are others:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Adding a Chart Title Using VBA
We have a chart selected in the worksheet as shown below:
You have to add a chart title first using the Chart.SetElement method and then specify the text of the chart title by setting the ChartTitle.Text property.
The following code shows you how to add a chart title and specify the text of the title of the Active Chart:
Sub AddingAndSettingAChartTitle()
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = "The Sales of the Product"
End Sub
The result is:
Note: You must select the chart first to make it the Active Chart to be able to use the ActiveChart object in your code.
Changing the Chart Background Color Using VBA
We have a chart selected in the worksheet as shown below:
You can change the background color of the entire chart by setting the RGB property of the FillFormat object of the ChartArea object. The following code will give the chart a light orange background color:
Sub AddingABackgroundColorToTheChartArea()
ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)
End Sub
The result is:
You can also change the background color of the entire chart by setting the ColorIndex property of the Interior object of the ChartArea object. The following code will give the chart an orange background color:
Sub AddingABackgroundColorToTheChartArea()
ActiveChart.ChartArea.Interior.ColorIndex = 40
End Sub
The result is:
Note: The ColorIndex property allows you to specify a color based on a value from 1 to 56, drawn from the preset palette, to see which values represent the different colors, click here.
Changing the Chart Plot Area Color Using VBA
We have a chart selected in the worksheet as shown below:
You can change the background color of just the plot area of the chart, by setting the RGB property of the FillFormat object of the PlotArea object. The following code will give the plot area of the chart a light green background color:
Sub AddingABackgroundColorToThePlotArea()
ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)
End Sub
The result is:
Adding a Legend Using VBA
We have a chart selected in the worksheet, as shown below:
You can add a legend using the Chart.SetElement method. The following code adds a legend to the left of the chart:
Sub AddingALegend()
ActiveChart.SetElement (msoElementLegendLeft)
End Sub
The result is:
You can specify the position of the legend in the following ways:
- msoElementLegendLeft – displays the legend on the left side of the chart.
- msoElementLegendLeftOverlay – overlays the legend on the left side of the chart.
- msoElementLegendRight – displays the legend on the right side of the chart.
- msoElementLegendRightOverlay – overlays the legend on the right side of the chart.
- msoElementLegendBottom – displays the legend at the bottom of the chart.
- msoElementLegendTop – displays the legend at the top of the chart.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
Adding Data Labels Using VBA
We have a chart selected in the worksheet, as shown below:
You can add data labels using the Chart.SetElement method. The following code adds data labels to the inside end of the chart:
Sub AddingADataLabels()
ActiveChart.SetElement msoElementDataLabelInsideEnd
End Sub
The result is:
You can specify how the data labels are positioned in the following ways:
- msoElementDataLabelShow – display data labels.
- msoElementDataLabelRight – displays data labels on the right of the chart.
- msoElementDataLabelLeft – displays data labels on the left of the chart.
- msoElementDataLabelTop – displays data labels at the top of the chart.
- msoElementDataLabelBestFit – determines the best fit.
- msoElementDataLabelBottom – displays data labels at the bottom of the chart.
- msoElementDataLabelCallout – displays data labels as a callout.
- msoElementDataLabelCenter – displays data labels on the center.
- msoElementDataLabelInsideBase – displays data labels on the inside base.
- msoElementDataLabelOutSideEnd – displays data labels on the outside end of the chart.
- msoElementDataLabelInsideEnd – displays data labels on the inside end of the chart.
Adding an X-axis and Title in VBA
We have a chart selected in the worksheet, as shown below:
You can add an X-axis and X-axis title using the Chart.SetElement method. The following code adds an X-axis and X-axis title to the chart:
Sub AddingAnXAxisandXTitle()
With ActiveChart
.SetElement msoElementPrimaryCategoryAxisShow
.SetElement msoElementPrimaryCategoryAxisTitleHorizontal
End With
End Sub
The result is:
Adding a Y-axis and Title in VBA
We have a chart selected in the worksheet, as shown below:
You can add a Y-axis and Y-axis title using the Chart.SetElement method. The following code adds an Y-axis and Y-axis title to the chart:
Sub AddingAYAxisandYTitle()
With ActiveChart
.SetElement msoElementPrimaryValueAxisShow
.SetElement msoElementPrimaryValueAxisTitleHorizontal
End With
End Sub
The result is:
VBA Programming | Code Generator does work for you!
Changing the Number Format of An Axis
We have a chart selected in the worksheet, as shown below:
You can change the number format of an axis. The following code changes the number format of the y-axis to currency:
Sub ChangingTheNumberFormat()
ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"
End Sub
The result is:
Changing the Formatting of the Font in a Chart
We have the following chart selected in the worksheet as shown below:
You can change the formatting of the entire chart font, by referring to the font object and changing its name, font weight, and size. The following code changes the type, weight and size of the font of the entire chart.
Sub ChangingTheFontFormatting()
With ActiveChart
.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman"
.ChartArea.Format.TextFrame2.TextRange.Font.Bold = True
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14
End With
The result is:
Deleting a Chart Using VBA
We have a chart selected in the worksheet, as shown below:
We can use the following code in order to delete this chart:
Sub DeletingTheChart()
ActiveChart.Parent.Delete
End Sub
Referring to the ChartObjects Collection
You can access all the embedded charts in your worksheet or workbook by referring to the ChartObjects collection. We have two charts on the same sheet shown below:
We will refer to the ChartObjects collection in order to give both charts on the worksheet the same height, width, delete the gridlines, make the background color the same, give the charts the same plot area color and make the plot area line color the same color:
Sub ReferringToAllTheChartsOnASheet()
Dim cht As ChartObject
For Each cht In ActiveSheet.ChartObjects
cht.Height = 144.85
cht.Width = 246.61
cht.Chart.Axes(xlValue).MajorGridlines.Delete
cht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)
cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)
Next cht
End Sub
The result is:
Inserting a Chart on Its Own Chart Sheet
We have the range A1:B6 which contains the source data, shown below:
You can create a chart using the Charts.Add method. The following code will create a chart on its own chart sheet:
Sub InsertingAChartOnItsOwnChartSheet()
Sheets("Sheet1").Range("A1:B6").Select
Charts.Add
End Sub
The result is:
See some of our other charting tutorials:
Charts in Excel
Create a Bar Chart in VBA
Содержание
- Объект Chart (Excel)
- Примечания
- События
- Методы
- Свойства
- См. также
- Поддержка и обратная связь
- Объект Charts (Excel)
- Замечания
- Пример
- Методы
- Свойства
- См. также
- Поддержка и обратная связь
- Руководство VBA для диаграмм и графиков
- Создание встроенной диаграммы с помощью VBA
- Указание типа диаграммы с помощью VBA
- Добавление заголовка диаграммы с помощью VBA
- Изменение цвета фона диаграммы с помощью VBA
- Изменение цвета области графика диаграммы с помощью VBA
- Добавление легенды с помощью VBA
- Добавление меток данных с помощью VBA
- Добавление оси X и заголовка в VBA
- Добавление оси Y и заголовка в VBA
- Изменение числового формата оси
- Изменение форматирования шрифта на диаграмме
- Удаление диаграммы с помощью VBA
- Ссылаясь на коллекцию ChartObjects
- Вставка диаграммы на отдельный лист диаграммы
Объект Chart (Excel)
Представляет диаграмму в книге.
Примечания
Диаграмма может представлять собой внедренную диаграмму (содержащуюся в объекте ChartObject) или отдельный лист диаграммы.
Коллекция Charts содержит объект Chart для каждого листа диаграммы в книге. Чтобы вернуть один объект Chart, используйте синтаксис Charts (индекс), где индекс — это номер индекса или имя листа диаграммы.
Номер индекса диаграммы представляет положение листа диаграммы на панели вкладок книги. Charts(1) — это первая (крайняя левая) диаграмма в книге; Charts(Charts.Count) — последняя (самая правая).
Все листы диаграмм включаются в число индексов, даже если они скрыты. Имя листа диаграммы отображается на вкладке книги для диаграммы. Используйте свойство Name объекта ChartObject, чтобы задать или возвратить имя диаграммы.
В следующем примере изменяется цвет ряда 1 на листе диаграммы 1.
В следующем примере диаграмма Sales (Продажи) перемещается в конец активной книги.
Объект Chart также является элементом коллекции Sheets, который содержит все листы книги (рабочие листы и листы диаграммы). Чтобы вернуть один лист, используйте синтаксис Sheets (индекс), где индекс — это номер индекса или имя листа.
Если диаграмма является активным объектом, для ссылки на нее можно использовать свойство ActiveChart. Лист диаграммы активен, если пользователь выбрал его или он активирован с помощью метода Activate объекта Chart или метода Activate объекта ChartObject.
В следующем примере активируется лист диаграммы 1, а затем задается тип и заголовок диаграммы.
Внедренная диаграмма активна, если пользователь выбрал ее или объект ChartObject, в котором она находится, активирован с помощью метода Activate.
В следующем примере активируется внедренная диаграмма 1 на листе 1, а затем задается тип и название диаграммы. Обратите внимание, что после активации внедренной диаграммы код в этом примере совпадает с предыдущим примером. С помощью свойства ActiveChart можно написать код на языке Visual Basic, который может ссылаться на внедренную диаграмму или на лист диаграммы (в зависимости от активного объекта).
Если лист диаграммы является активным листом, для ссылки на него можно использовать свойство ActiveSheet. В следующем примере используется метод Activate для активации листа диаграммы Chart1, а затем задается синий цвет для ряда 1 на диаграмме.
События
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Объект Charts (Excel)
Коллекция всех листов диаграмм в указанной или активной книге.
Замечания
Каждый лист диаграммы представлен объектом Chart . Сюда не входят диаграммы, внедренные на листах или на листах диалоговых окон. Сведения о внедренных диаграммах см. в разделах Объекты Chart и ChartObject .
Пример
Используйте свойство Charts объекта Workbook , чтобы вернуть коллекцию Charts . В следующем примере отображаются все листы диаграмм в активной книге.
Используйте метод Add объекта ChartObjects , чтобы создать лист диаграммы и добавить его в книгу. В следующем примере новый лист диаграммы добавляется в активную книгу и помещает новый лист диаграммы сразу после листа с именем Лист1.
Метод Add можно объединить с методом ChartWizard объекта Chart, чтобы добавить новую диаграмму, содержащую данные с листа. В следующем примере добавляется новая графиковая диаграмма на основе данных в ячейках A1:A20 на листе с именем Лист1.
Чтобы вернуть один объект Chart, используйте синтаксис Charts (индекс), где индекс — это номер индекса или имя листа диаграммы. В следующем примере цвет ряда 1 на листе диаграммы 1 изменяется на красный.
Коллекция Листов содержит все листы книги (как листы диаграмм, так и листы). Используйте листы (индекс), где индекс — это имя или номер листа, чтобы вернуть один лист.
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Руководство VBA для диаграмм и графиков
Диаграммы и графики Excel используются для визуального отображения данных. В этом руководстве мы расскажем, как использовать VBA для создания диаграмм и элементов диаграмм и управления ими.
Вы можете создавать встроенные диаграммы на листе или диаграммы на отдельных листах диаграмм.
Создание встроенной диаграммы с помощью VBA
У нас есть диапазон A1: B4, который содержит исходные данные, показанные ниже:
Вы можете создать диаграмму с помощью метода ChartObjects.Add. Следующий код создаст на листе встроенную диаграмму:
12345678 | Sub CreateEmbeddedChartUsingChartObject ()Уменьшить размер встроенной диаграммы как ChartObjectУстановите embeddedchart = Sheets («Sheet1»). ChartObjects.Add (Left: = 180, Width: = 300, Top: = 7, Height: = 200)embeddedchart.Chart.SetSourceData Источник: = Sheets («Sheet1»). Range («A1: B4»)Конец подписки |
Вы также можете создать диаграмму с помощью метода Shapes.AddChart. Следующий код создаст на листе встроенную диаграмму:
12345678 | Подложка CreateEmbeddedChartUsingShapesAddChart ()Заменить встроенную диаграмму как фигуруУстановите embeddedchart = Sheets («Sheet1»). Shapes.AddChartembeddedchart.Chart.SetSourceData Source: = Sheets («Sheet1»). Range («A1: B4»)Конец подписки |
Указание типа диаграммы с помощью VBA
У нас есть диапазон A1: B5, который содержит исходные данные, показанные ниже:
Вы можете указать тип диаграммы, используя свойство ChartType. Следующий код создаст круговую диаграмму на листе, поскольку для свойства ChartType задано значение xlPie:
123456789 | Sub SpecifyAChartType ()Dim chrt как ChartObjectУстановите chrt = Sheets («Sheet1»). ChartObjects.Add (Left: = 180, Width: = 270, Top: = 7, Height: = 210)chrt.Chart.SetSourceData Source: = Sheets («Sheet1»). Range («A1: B5»)chrt.Chart.ChartType = xlPieКонец подписки |
Результат:
Вот некоторые из популярных типов диаграмм, которые обычно указываются, хотя есть и другие:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Добавление заголовка диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Сначала необходимо добавить заголовок диаграммы с помощью метода Chart.SetElement, а затем указать текст заголовка диаграммы, установив свойство ChartTitle.Text.
В следующем коде показано, как добавить заголовок диаграммы и указать текст заголовка активной диаграммы:
123456 | Sub AddingAndSettingAChartTitle ()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = «Продажи продукта»Конец подписки |
Примечание. Сначала необходимо выбрать диаграмму, чтобы сделать ее активной, чтобы можно было использовать объект ActiveChart в своем коде.
Изменение цвета фона диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить цвет фона всей диаграммы, установив свойство RGB объекта FillFormat объекта ChartArea. Следующий код придаст диаграмме светло-оранжевый цвет фона:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)Конец подписки |
Вы также можете изменить цвет фона всей диаграммы, установив свойство ColorIndex объекта Interior объекта ChartArea. Следующий код придаст диаграмме оранжевый цвет фона:
12345 | Sub AddingABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Interior.ColorIndex = 40Конец подписки |
Результат:
Примечание. Свойство ColorIndex позволяет указать цвет на основе значения от 1 до 56, взятого из предустановленной палитры, чтобы увидеть, какие значения представляют разные цвета, щелкните здесь.
Изменение цвета области графика диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить цвет фона только области построения диаграммы, установив свойство RGB объекта FillFormat объекта PlotArea. Следующий код придаст области построения диаграммы светло-зеленый цвет фона:
12345 | Sub AddingABackgroundColorToThePlotArea ()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB (208, 254, 202)Конец подписки |
Результат:
Добавление легенды с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить легенду с помощью метода Chart.SetElement. Следующий код добавляет легенду слева от диаграммы:
12345 | Подложка AddingALegend ()ActiveChart.SetElement (msoElementLegendLeft)Конец подписки |
Результат:
Вы можете указать положение легенды следующими способами:
- msoElementLegendLeft — отображает легенду в левой части диаграммы.
- msoElementLegendLeftOverlay — накладывает легенду на левую часть диаграммы.
- msoElementLegendRight — отображает легенду в правой части диаграммы.
- msoElementLegendRightOverlay — накладывает легенду на правую часть диаграммы.
- msoElementLegendBottom — отображает легенду внизу диаграммы.
- msoElementLegendTop — отображает легенду вверху диаграммы.
Добавление меток данных с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавлять метки данных с помощью метода Chart.SetElement. Следующий код добавляет метки данных на внутренний конец диаграммы:
12345 | Sub AddingADataLabels ()ActiveChart.SetElement msoElementDataLabelInsideEndКонец подписки |
Вы можете указать расположение меток данных следующими способами:
- msoElementDataLabelShow — отображать метки данных.
- msoElementDataLabelRight — отображает метки данных в правой части диаграммы.
- msoElementDataLabelLeft — отображает метки данных в левой части диаграммы.
- msoElementDataLabelTop — отображает метки данных вверху диаграммы.
- msoElementDataLabelBestFit — определяет наилучшее соответствие.
- msoElementDataLabelBottom — отображает метки данных внизу диаграммы.
- msoElementDataLabelCallout — отображает метки данных в виде выноски.
- msoElementDataLabelCenter — отображает метки данных в центре.
- msoElementDataLabelInsideBase — отображает метки данных на внутренней основе.
- msoElementDataLabelOutSideEnd — отображает метки данных на внешнем конце диаграммы.
- msoElementDataLabelInsideEnd — отображает метки данных на внутреннем конце диаграммы.
Добавление оси X и заголовка в VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить заголовок оси X и оси X с помощью метода Chart.SetElement. Следующий код добавляет к диаграмме заголовки осей X и X:
123456789 | Sub AddingAnXAxisandXTitle ()С ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalКонец сКонец подписки |
Добавление оси Y и заголовка в VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете добавить заголовок оси Y и оси Y с помощью метода Chart.SetElement. Следующий код добавляет к диаграмме заголовки по осям Y и Y:
1234567 | Дополнительное добавлениеAYAxisandYTitle ()С ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalКонец сКонец подписки |
Изменение числового формата оси
У нас есть диаграмма, выбранная на листе, как показано ниже:
Вы можете изменить числовой формат оси. Следующий код изменяет числовой формат оси Y на валюту:
12345 | Sub ChangingTheNumberFormat ()ActiveChart.Axes (xlValue) .TickLabels.NumberFormat = «$ #, ## 0.00″Конец подписки |
Изменение форматирования шрифта на диаграмме
У нас на листе выбрана следующая диаграмма, как показано ниже:
Вы можете изменить форматирование всего шрифта диаграммы, обратившись к объекту шрифта и изменив его имя, толщину и размер шрифта. Следующий код изменяет тип, вес и размер шрифта всей диаграммы.
12345678910 | Sub ChangingTheFontFormatting ()С ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = «Times New Roman».ChartArea.Format.TextFrame2.TextRange.Font.Bold = Истина.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Конец с |
Удаление диаграммы с помощью VBA
У нас есть диаграмма, выбранная на листе, как показано ниже:
Мы можем использовать следующий код, чтобы удалить эту диаграмму:
12345 | Sub DeletingTheChart ()ActiveChart.Parent.DeleteКонец подписки |
Ссылаясь на коллекцию ChartObjects
Вы можете получить доступ ко всем встроенным диаграммам на листе или в книге, обратившись к коллекции ChartObjects. У нас есть две диаграммы на одном листе, показанном ниже:
Мы обратимся к коллекции ChartObjects, чтобы дать обеим диаграммам на листе одинаковую высоту и ширину, удалить линии сетки, сделать цвет фона одинаковым, дать диаграммам одинаковый цвет области графика и сделать одинаковый цвет линии области графика. цвет:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet ()Dim cht As ChartObjectДля каждого cht в ActiveSheet.ChartObjectscht.Height = 144,85cht.Width = 246,61cht.Chart.Axes (xlValue) .MajorGridlines.Deletecht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB (242, 242, 242)cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB (234, 234, 234)cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB (18, 97, 172)Следующий чтКонец подписки |
Вставка диаграммы на отдельный лист диаграммы
У нас есть диапазон A1: B6, который содержит исходные данные, показанные ниже:
Вы можете создать диаграмму, используя метод Charts.Add. Следующий код создаст диаграмму на собственном листе диаграммы:
123456 | Sub InsertingAChartOnItsOwnChartSheet ()Листы («Лист1»). Диапазон («A1: B6»). ВыберитеCharts.AddКонец подписки |
Результат:
См. Некоторые из наших других руководств по построению графиков:
Источник
Обычно при создании диаграммы по умолчанию используется цвет полосы столбца. Если вам нужно отформатировать цвет с заливкой на каждой панели на основе цветов ячеек, как показано на следующем снимке экрана, как вы могли бы решить эту проблему в 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% и сокращает количество щелчков мышью на сотни каждый день!