Excel. VBA-код для создания подписей к данным диаграммы

Рубрика: 7. Полезняшки Excel

Ранее я уже подробно рассказывал о пузырьковых диаграммах. Кратко напомню.

Пузырьковая диаграмма – это разновидность точечной диаграммы, в которой точки данных заменены пузырьками, причем их размер служит дополнительным (третьим) измерением данных. На пузырьковой диаграмме, как и на точечной, нет оси категорий — и горизонтальная, и вертикальная оси являются осями значений. В дополнение к значениям X и значениям Y, наносимым на точечную диаграмму, на пузырьковой диаграмме показаны также значения Z (размер).

Пузырьковые диаграммы позволяют наглядно представить и анализировать взаимозависимости трех переменных.

В качестве примера построения пузырьковой диаграммы я привел распределение населения России по федеральным округам (рис. 1; см. также Excel-файл). Карта России была найдена в Интернете, сохранена как рисунок и импортирована в качестве фона области построения диаграммы. Координаты (X и Y) каждого «пузыря» были подобраны вручную.

Рис. 1. Распределение населения России по федеральным округам

Скачать заметку в формате Word, пример Подписи к пузырьковой диаграмме в формате zip-архива; политика провайдера не позволяет размещать на сайте файлы, содержащие код VBA; поэтому я заархивировал Excel-файл.

Поскольку доля населения определялась размером пузырей, мне хотелось вывести на диаграмме в качестве подписей названия округов. К сожалению, стандартными средствами Excel это сделать нельзя (рис. 2). Видно, что в качестве подписей Excel предлагает вывести: имя ряда, значение Х, значение Y, размер пузыря или любую комбинацию этих параметров.

Рис. 2. Подписи данных. Стандартные возможности Excel

И вот недавно в книге Гладкий А.А., Чиртик А.А. «Excel 2007. Трюки и эффекты» я встретил макрос [1], который позволил мне вывести на диаграмму названия округов.

Вот его код

___________________________

Sub ShowLabels()

Dim rgLabels As Range      ‘Диапазон с подписями

Dim chrChart As Chart      ‘Диаграмма

Dim intPoint As Integer    ‘Точка, для которой добавляется подпись

‘Определение диаграммы

Set chrChart = ActiveSheet.ChartObjects(1).Chart

‘Запрос на ввод диапазона с исходными данными

On Error Resume Next

Set rgLabels = Application.InputBox(«Укажите диапазон с подписями», Type:=8)

If rgLabels Is Nothing Then Exit Sub

On Error GoTo 0

‘Добавление подписей

chrChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False

‘Просмотр диапазона и назначение подписей

For intPoint = 1 To chrChart.SeriesCollection(1).Points.Count

chrChart.SeriesCollection(1).Points(intPoint).DataLabel.Text = rgLabels(intPoint)

Next intPoint

End Sub

____________________________

Sub DeleteLabels()

‘Удаление подписей диаграммы

ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).HasDataLabels = False

End Sub

___________________________

Код содержит две процедуры: создать подписи к данным диаграммы и удалить подписи.

Использование кода позволяет нанести на пузырьковую диаграмму названия округов (рис. 3)

Рис. 3. Размещение подписей данных с использованием кода VBA

Приведенный код можно использовать не только для пузырьковых диаграмм.


[1] Если вы не знакомы с записью кода VBA рекомендую заметку Excel. Суммирование по ячейкам, выделенным цветом, где я даю начальные сведения на эту тему

Комментарии: (1)

Я записала модуль в Вижуал Бейсик, как описано у вас для сумм цветных ячеек. Строю диаграмму, но не получается у меня ничего (на диаграмму правой кнопкой мыши, вставляю макрос). Пожалуйста, расскажите как пользоваться этим модулем.


Прокомментировать