Excel. Трюки и эффекты — страница 29 из 36

Эксперименты с диаграммами

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

Построение диаграммы с помощью макроса

В данном разделе мы рассмотрим, каким образом можно построить диаграмму с помощью макроса.

Предположим, что у нас есть таблица с исходными данными (рис. 4.1), на основании которых необходимо построить диаграмму.

Рис. 4.1. Исходные данные для построения диаграммы


В данной таблице представлена информация о выручке за первый квартал (помесячно) по четырем торговым точкам. Обратите внимание на расположение таблицы (то есть на координаты диапазона, в котором она находится, – А1:Е4).

Для построения диаграммы следует написать и выполнить макрос, код которого приведен в листинге 4.1.

Листинг 4.1. Макрос построения диаграммы

Sub CreateChart()

' Создание и настройка диаграммы

With Charts.Add

' Данные из первого листа

.SetSourceData Source:=Worksheets(1).Range(«A1:E4»)

' Заголовок

.HasTitle = True

.ChartTitle.Text = «Выручка по магазинам»

' Активизируем диаграмму

.Activate

End With

End Sub

В результате выполнения данного макроса будет построена диаграмма, изображенная на рис. 4.2.

Рис. 4.2. Построенная диаграмма


При написании макроса наряду с другими параметрами мы указали диапазон, который следует обрабатывать (А1:Е4), а также заголовок диаграммы – Выручка по магазинам. Созданная диаграмма помещается на автоматически сформированный рабочий лист, которому по умолчанию присваивается имя Диаграмма1 (при последующих построениях диаграммы каждый раз будет создаваться новый лист Диаграмма с номером, увеличенным на 1 по сравнению с предыдущим листом).

При необходимости на основании этих же данных (см. рис. 4.1) можно создать внедренную диаграмму. Для этого нужно написать и запустить следующий макрос (листинг 4.2).

Листинг 4.2. Построение внедренной диаграммы

Sub CreateEmbeddedChart()

' Создание и настройка внедренной диаграммы

With Worksheets(1).ChartObjects.Add(100, 60, 250, 200)

' Объемная диаграмма

.Chart.ChartType = xl3DArea

' Источник данных

.Chart.SetSourceData Source:=Worksheets(1).Range(«A1:E4»)

End With

End Sub

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

На рисунке видно, что диаграмма внедрена в рабочий лист с исходными данными.

Рис. 4.3. Внедренная диаграмма


Можно также создать диаграмму на основе выделенных данных. В листинге 4.3 приведен текст макроса, в котором, помимо прочего, указывается размер диаграммы и ее расположение.

Листинг 4.3. Создание диаграммы на основе выделенных данных

Sub CreateCharOnSelection()

' Создание диаграммы (с заданием положения на листе)

With ActiveSheet.ChartObjects.Add( _

Selection.Left + Selection.Width, _

Selection.Top + Selection.Height, 300, 200).Chart

' Тип диаграммы

.ChartType = xlColumnClustered

' Источник данных – выделение

.SetSourceData Source:=Selection, PlotBy:=xlColumns

' Без легенды

.HasLegend = False

' Без заголовка

.HasTitle = True

.ChartTitle.Characters.Text = «Выручка за период»

' Выделение диаграммы

.Parent.Select

End With

End Sub

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

Рис. 4.4. Диаграмма на основе выделенных данных


Не стоит забывать, что перед запуском макроса необходимо выделить диапазон, данные которого должны быть учтены при построении диаграммы.

При подведении указателя мыши к столбикам диаграммы на экране будет отображаться соответствующая всплывающая подсказка.

Сохранение диаграммы в отдельном файле

После создания диаграммы может возникнуть вопрос – а где ее хранить? Можно использовать для этого листы рабочей книги, а можно сохранить диаграмму в отдельном файле под указанным именем. Например, с помощью приведенного в листинге 4.4 макроса диаграмма будет сохранена под именем Диаграмма. gif.

Листинг 4.4. Сохранение диаграммы

Sub SaveChart()

' Сохранение выделенной диаграммы в файл

If ActiveChart Is Nothing Then

' Нет выделенных диаграмм

MsgBox «Выделите диаграмму»

Else

' Сохранение...

ActiveChart.Export ActiveWorkbook.path & «\Диаграмма.gif»,

«GIF»

End If

End Sub

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

Однако при сохранении диаграммы может возникнуть необходимость в интерактивном задании имени и расположения файла диаграммы. Для этого можно использовать макрос, код которого приведен в листинге 4.5.

Листинг 4.5. Сохранение диаграммы под указанным именем

Sub InteractiveSaveChart()

Dim strFileName As String ' Имя файла для сохранения

' Проверка, выделена ли диаграмма

If ActiveChart Is Nothing Then

' Нет выделенных диаграмм

MsgBox «Выделите диаграмму»

Else

' Выбор файла для сохранения

strFileName = Application.GetSaveAsFilename( _

ActiveChart.Name & «.gif», «Файлы GIF (*.gif), *.gif», 1, _

«Сохранить диаграмму в формате GIF»)

' Проверка, выбран ли файл

If strFileName <> "" Then

' Сохранение выделенной диаграммы в файл

ActiveChart.Export strFileName, «GIF»

End If

End If

End Sub

Как и в предыдущем примере, перед сохранением диаграмму нужно выделить, иначе появится окно с соответствующим сообщением. После запуска макроса откроется окно Сохранить диаграмму в формате GIF (см. соответствующую строку приведенного выше кода), в котором по обычным правилам Windows указывается путь для сохранения и присваивается имя файлу диаграммы.

Построение и удаление диаграммы нажатием одной кнопки

В данном разделе мы рассмотрим трюк, реализовав который можно будет быстро строить и удалять диаграммы нажатием лишь одной кнопки.

Предположим, у нас есть следующие исходные данные (выручка по торговым точкам), на основании которых нужно построить диаграмму (рис. 4.5).

Рис. 4.5. Исходные данные для построения диаграммы


Теперь нам нужно написать код, который представлен в листинге 4.6. Этот код должен быть помещен в модуль рабочего листа.

Листинг 4.6. Быстрое построение и удаление диаграммы

Sub CreateChart()

' Создание диаграммы

Charts.Add

' Параметры диаграммы

' Тип диаграммы

ActiveChart.ChartType = xlLineMarkers

' Заголовок

ActiveChart.SetSourceData Range(«B1:E2»), xlRows

ActiveChart.Location xlLocationAsObject, Name

' Остальные параметры

With ActiveChart

' Заголовок

.HasTitle = True

.ChartTitle.Characters.Text = Name

' Заголовок оси категорий

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text _

= Sheets(Name).Range(«A1»).Value

' Заголовок оси значений

.Axes(xlValue, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text _

= Sheets(Name).Range(«A2»).Value

' Отображение легенды

.HasLegend = False

.HasDataTable = True

.DataTable.ShowLegendKey = True

' Настройка отображения сетки

With .Axes(xlCategory)

.HasMajorGridlines = True

.HasMinorGridlines = False

End With

With .Axes(xlValue)

.HasMajorGridlines = True

.HasMinorGridlines = False

End With

End With

End Sub

Sub DeleteChart()

' Удаление диаграммы

ActiveSheet.ChartObjects.Delete

End Sub

После написания кода мы уже можем строить диаграмму – для этого достаточно запустить макрос CreateChart. Но мы упростим этот процесс.

Поместим на панель быстрого доступа две кнопки: для создания диаграммы и для удаления диаграммы. Для этого войдем в режим настройки Excel 2007, откроем в нем раздел Настройка, затем в поле Выбрать команды из выберем значение Макросы – в результате в расположенном ниже списке отобразятся названия двух макросов: CreateChart и DeLeteChart (в соответствии с листингом 4.6). С помощью кнопки Добавить поместим их на панель быстрого доступа (то есть в расположенный справа список) и нажмем кнопку ОК. Теперь для создания диаграммы достаточно будет на панели быстрого доступа нажать соответствующую кнопку – результат представлен на рис. 4.6.

Для удаления построенной диаграммы с рабочего листа достаточно на панели быстрого доступа нажать кнопку удаления диаграммы.

В предыдущем разделе мы рассматривали порядок сохранения диаграммы в отдельном файле с расширением GIF. Этот процесс также можно реализовать нажатием одной кнопки, по аналогии с тем, как это описывается в данном разделе.

Рис. 4.6. Создание диаграммы одним нажатием кнопки

Вывод списка диаграмм в отдельном окне

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

К примеру, если необходимо быстро узнать количество внедренных диагра