Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

624

.pdf
Скачиваний:
0
Добавлен:
06.12.2022
Размер:
2.74 Mб
Скачать

Рассмотрим сортировку расчетной таблицы «Сведения о состоянии пути ПЧ». Таблица должна быть отсортирована по возрастанию процента негодных шпал.

Цели работы:

изучить порядок сортировки данных;

закрепить навыки получения макросов автозаписью. Задание 1. Отсортируйте таблицу «Сведения о состоянии

пути ПЧ» по возрастанию значенийграфы «Процент негодных шпал» под автозапись и поместите на лист Отсортированная таблица.

По ря д ок р або т ы

1.Создайте новый лист Отсортированная таблица.

2.Нажмите командную кнопку «Расчетная таблица», расположенную на листе Отчеты. В результате на листе Расчетная таблица появится таблица «Сведения о состоянии пути ПЧ», пока не отсортированная.

3.Включите автозапись (Сервис Макрос Начать запись), задайте макросу имя «Сортировка».

4.Выделите таблицу иее название, скопируйте выделенный блок в буфер обмена любым известным вам способом.

5.Перейдите на лист «Отсортированная таблица», активизируйте ячейку A1, вставьте из буфера обмена выделенный блок. Появится такая же таблица, как и на листе Расчетная таблица.

6.Выделите таблицу (без строк «Итого» и «В среднем»).

7.Используя меню, наберитекомандуДанные Сортировка. Excel отобразит диалоговое окно Сортировка диапазона.

8.В списке Сортировать по выберите поле «Процент негодных шпал», установите переключатель по возрастанию.

9.Установите переключатель «Идентифицировать поля по» в положение подписям (первая строка диапазона) и

нажмите ОК.

После выполненных действий все строки таблицы будут отсортированы по возрастанию значений графы «Процент негодных шпал».

10.Активизируйте ячейку A1 и остановите запись.

4 1

Макрос записан, его текст можно увидеть, задав команду Сервис Макрос Макросы,выбравиз спискамакросов имя «Сортировка» и нажав кнопку диалогового окна «Изменить».

Макрос будет иметь вид:

Sub Сортировка() Range(“A2:N13”).Select

Selection.Sort Key1:=Range(“L3”), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal

End Sub

11. Внесите в макрос изменения, которые позволят по записям базы данных получать расчетную таблицу и сортировать ее по указанной в задании графе. Изменения показаны полужирным шрифтом. Комментариисделаны для облегчения понимания назначения полученных кодов. После внесенных изменений макрос должен иметь вид:

Sub Сортировка()

Расчет Обращение к макросу, формирующему расчетную таблицу

Sheets(“Отсортированная таблица”).Cells.Clear

Очистка клеток ли-

ста “Отсортированная таблица”

 

Range(“A1:N” & n + 2).Select

Выделениетаблицы,n-номерпоследней

занятой ‘строки в базе данных; определяется в макросе “Расчет”

Selection.Copy

Копирование в буфер обмена

Sheets(“Отсортированная таблица”).Select

Активизация листа

“Отсортированная таблица”

 

 

Range(“A1”).Select

Активизация ячейки A1

ActiveSheet.Paste

Вставка из буфера обмена

Range(“A2:N” & n).Select

Выделение блока для сортировки

Application.CutCopyMode = False

 

Selection.Sort Key1:=Range(“L3”), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortNormal

 

 

Range(“A1:N1”).Select

Выделение блока с названием таблицы

End Sub

12.Макрос Сортировка поместите в модуль «Отчеты», в котором уже находится макрос Расчет. Для его успешной работы необходимо в начале модуля объявить переменную n оператором Dim n As Integer, сделав ее тем самым «видимой» во всех макросах данного модуля.

13.Проверьте работу макроса. Для этого на листе Отчеты создайте командную кнопку «Сортировка по проценту негодных шпал», свяжите с макросом «Сортировка» и нажмите ее.

4 2

Отсортированная таблица приведена на рис. 16.

Рис. 16. Таблица, отсортированная по возрастанию процента негодных шпал

Контрольныевопросы

1.Сортировка, понятие, порядоквыполнения всредеExcel.

2.Метод Sort объекта Range, его синтаксис.

3.Значения какого количества столбцов могут учитываться при выполнении сортировки?

4.Каким образом можносделать переменную«видимой»во всех макросах одного модуля?

2.3. Построение диаграмм. Использование объекта

ChartObjects в процедурах VBA

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

4 3

исходных значений. Настоящий подраздел будет посвящен рассмотрению возможностей языка VBA, предназначенных для работы с диаграммами Excel.

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

как встроенная диаграмма на обычном рабочем листе, на котором также могут быть расположены данные и/или другие встроенные диаграммы;

на листе диаграммы — это специальный тип рабочего листа, который содержит только диаграмму.

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

Встроенные диаграммы создают в тех случаях, когда необходимо отобразить диаграмму вместе с ее исходными данными и/или вместе с другими данными и другими встроенными диаграммами. Каждая встроенная диаграмма представлена объектом Chart, который, в свою очередь, содержится в объектеChartObject. Такая несколькоусложненная напервый взгляд организация объясняется тем, что объект Chart сам по себе не обладает возможностями для определения размера или положения диаграммы — осуществление этих функций возлагается на объект ChartObject.

Листы диаграмм используются в тех случаях, когда необходимо сделать эту диаграмму максимально большого размера, но при этом параллельно отображать данные или другие диаграммы не требуется. Лист диаграммы, как и встроенная диаграмма, представлен объектом Chart. Но, в отличие от встроенной диаграммы, использовать объект ChartObject не обязательно, так как положение самой диаграммы на листе диаграмм фиксировано, а ее размер зависит от размера листа. Каждая рабочая книга содержит коллекцию Charts, в которой находятся все добавленные к ней листы диаграммы.

Для построения диаграмм в Excel используется мастер

диаграмм (). Он предлагает пользователю последователь-

ность действий, с помощью которой можно определить вид

4 4

создаваемой диаграммы. Послеэтого всоответствии сполученными ответами создается диаграмма.

В распоряжении программистов VBA имеется подобный инструмент — метод ChartWizard. Создав пустую диаграмму, можно вызвать метод ChartWizard и использовать его для определения данных, на основании которых должна строиться диаграмма, определения типа диаграммы, а также некоторых других аспектов отображения ее на экране. Иногда это выполнить проще, чем поочередно изменять значения отдельных свойств объекта Chart.

Метод ChartWizard имеет следующий синтаксис: SomeChart.ChartWizard(Source, Gallery, Format, PlotBy,

CategoryLabels,SeriesLabels,HasLegend,Title,CategoryTitle, ValueTitle)

Source — объект Range, ссылающийся на диапазон данных, на основании которых строится диаграмма.

Gallery — константа xlChartType, определяющая тип диаграммы: xlArea, xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie, xl3DSurface, xlDoughnut или xlDefaultAutoFormat.

Format — числовое значение от 1 до n, определяющее встроенный автоформат, или подтип диаграммы. Количество доступных автоформатов, а следовательно и максимально возможное значение n зависит от аргумента Gallery.

PlotBy — константа, определяющая способ расположения рядов данных: в строках (xlRows, по умолчанию) или в столбцах (xlColumns).

CategoryLabels — количество столбцов (если PlotBy= xlRows) или количество строк (если PlotBy= xlColumns), содержащих метки категорий.

SeriesLabels — количество строк (если PlotBy= xlRows) или количество столбцов (если PlotBy= xlColumns), содержащих метки рядов данных.

HasLegend — при выборе значения True на диаграмме отображается легенда; в противном случае (значение False) легенда не отображается. По умолчанию используется значе-

ние True.

4 5

Title — текст названия диаграммы. Аргумент не обязателен; по умолчанию диаграмма не имеет названия.

CategoryTitle — текст заголовка оси категорий. Аргумент необязателен; поумолчаниюось категорийнеимеет заголовка.

ValueTitle — текст заголовка оси значений. Аргумент не обязателен; по умолчанию ось значений не имеет заголовка.

Диаграмма в MS Excel создается для готовой расчетной таблицы. Если данные в исходной таблице изменяются, на диаграмме эти изменения автоматически отображаются. Но если изменяется количество строк с данными, например, дополняются строки, то такие изменения на диаграмме уже не будут видны. Процесс формирования диаграммы можно записать в командах макроса. Затем внести изменения в соответствующие строки для того, чтобы определить диапазон анализируемых данных.

Цели работы:

изучить порядок построения диаграмм;

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

Задание 1.По данным таблицы «Сведения осостоянии пути ПЧ» создайте под автозапись гистограмму «Число дефектных рельсов в километре» и поместите ее на лист Гистограмма.

По ря д ок р або т ы 1. Создайте новый лист Гистограмма.

2. Нажмите командную кнопку «Расчетная таблица», расположенную налистеОтчеты.ВрезультатеналистеРасчетная таблица появится таблица «Сведения о состоянии пути ПЧ».

3. Включите автозапись (Сервис Макрос Начать запись), задайте макросу имя «Гистограмма». Выполните следующие команды:

3.1. На панели инструментов щелкните кнопку «Мастер диаграмм».

3.2. На первом шаге работы «Мастера диаграмм» выберите тип: Гистограмма, вид: Обычная гистограмма.

3.3. Навтором шагена вкладке«Диапазонданных»встроке «Диапазон» щелкните левой кнопкой мыши и затем в расчетной таблице выделите блок ячеек E2 : E13 (рис. 17).

4 6

3.4.На вкладке «Ряд» в строке «Подписи оси Х» щелкните левой кнопкой мыши и затем в расчетной таблице выделите блок ячеек A3 : A13 (рис. 18).

3.5.На третьем шаге работы «Мастера диаграмм» на вкладке «Легенда» снимите флажок у параметра «Добавить легенду» (рис. 19).

Рис. 17. Формирование диапазона

Рис. 18. Формирование подписи оси

данных в диалоговом окне

Х в диалоговом окне «Мастера

«Мастера диаграмм»

диаграмм»

3.6.На вкладке «Заголовки»введите текст «номер километра» в строке «Ось Х (категории)» и текст

«шт.» в строке «Ось Y (значений)», в названии диаграммы вместо

км наберите километ-

ры (рис. 20).

3.7.На четвертом

шаге работы «Мастера диаграмм» выберите место расположения диаграммы: на имею-

щемся листе — «Гис-

Рис. 19. Формирование параметров

«Легенды» в диалоговом окне «Мастера

тограмма» (рис. 21).

диаграмм»

 

4 7

Рис. 20. Формирование заголовков в диалоговом окне «Мастера диаграмм»

Рис. 21. Выбор места расположения диаграммы в диалоговом окне «Мастера диаграмм»

3.8. Щелкните кнопку «Готово» в диалоге «Мастера диаграмм» и переместите внедренную диаграмму в верхний левый угол рабочего листа.

4. Остановите автозапись макроса.

Вы получите следующий текст (пояснения к командам сделаны вручную):

Sub Гистограмма()

Charts.Add ‘добавить диаграмму

ActiveChart.ChartType = xlColumnClustered ‘тип диаграммы (гистограмма) ActiveChart.SetSourceData Source:=Sheets(“Расчетная таблица”).Range (“E2:E13”), PlotBy:=xlColumns ‘данные для диаграммы на листе “Расчетная

таблица” из диапазона E2:E13, Ряды – в столбцах

4 8

ActiveChart.SeriesCollection(1).XValues = “=Расчетная таблца!R3C1:R13C1” ‘подписиоси Х – на листе “Расчетнаятаблица” впервом столбце с 3-й по 13-ю строку

ActiveChart.Location Where:=xlLocationAsObject, Name:=”Гистограмма”

место расположения диаграммы – лист “Гистограмма”

With ActiveChart ‘формирование заголовков

.HasTitle = True

.ChartTitle.Characters.Text = “Число дефектных рельсов в километре”

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = “номер кило-

метра”

.Axes(xlValue, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = “шт”

End With

 

 

ActiveChart.HasLegend = False

легенду не отображать

перемещение диаграммы

 

 

ActiveSheet.Shapes(“Диагр. 1”).IncrementLeft -136.5

влево

ActiveSheet.Shapes(“Диагр. 1”).IncrementTop -76.5

вверх

End Sub

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

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

Sub Гистограмма()

‘Гистограмма “Число дефектных рельсов в километре”

Расчет Обращение к макросу, формирующему таблицу удалим все диаграммы на листе “Гистограмма”

Sheets(“Гистограмма”). ChartObjects.Delete Charts.Add ‘добавить диаграмму

ActiveChart.ChartType = xlColumnClustered ‘тип диаграммы (гистограмма) ActiveChart.SetSourceData Source:=Sheets(“Расчетная таблица”).

Range(“E2:E” & n), PlotBy:=xlColumns ‘данные для диаграммы на листе

“Расчетная таблица” из диапазона E2:En, Ряды – в столбцах

ActiveChart.SeriesCollection(1).XValues = “=Расчетная таблица!R3C1:R”

&n & “C1”

подписи оси Х – на листе “Гистограмма” впервом столбце с 3-й по n-ю

строку

ActiveChart.Location Where:=xlLocationAsObject, Name:=“Гистограмма”

место расположения диаграммы – лист “Гистограмма” With ActiveChart ‘формирование заголовков

.HasTitle = True

4 9

.ChartTitle.Characters.Text = “Число дефектных рельсов в километре”

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = “номер кило-

метра”

.Axes(xlValue, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = “шт”

End With

 

 

ActiveChart.HasLegend = False

легенду не отображать

k= ActiveSheet.ChartObjects.Count

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

m = ActiveSheet.ChartObjects(k).Name

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

перемещение диаграммы

 

 

ActiveSheet.Shapes(m).IncrementLeft -136.5

влево

ActiveSheet.Shapes(m).IncrementTop -76.5

вверх

End Sub

6. Поместите макрос в модуль «Отчеты», где находятся все ранее полученные макросы, и проверьте его работу. Для этого на листе Отчеты создайте командную кнопку «Гистограмма», свяжите с макросом «Гистограмма» и нажмите ее для выполнения макроса.

Вы получите диаграмму как на рис. 22.

Рис. 22. Гистограмма

5 0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]