Лаб_раб_4_массивы

Лабораторная работа № 4

ОБРАБОТКА ДВУМЕРНЫХ МАССИВОВ В VBA

Цель работы: получить практические навыки по обработке двумерных массивов в MS Excel с помощью VBA; освоить использование элементов управления MS Excel.

Основные положения

Двумерный массив упорядоченный набор пронумерованных элементов одного типа, которые расположены в несколько строк и столбцов. Обращение к элементу массива происходит путём указания имени массива и двух индексов, заключённых в круглые скобки. Первый индекс указывает на номер строки, а второй – на номер столбца, на пересечении которых находится элемент, например А(2, 3).

VBA сохраняет зарезервированную область памяти для всех элементов в массиве, пока существует переменная типа массив. Такие массивы называются статическими, потому что число элементов в массиве не меняется.

Объявление двумерного статического массива:

Dim Имя_Массива (N, M) As Тип_Элементов

где N и M – целые числа (нумерация элементов в этом случае начинается с нуля). Или:

Dim Имя_Массива (1 To N, 1 To M) As Тип_Элементов

Оператор Option Base позволяет задавать 0 или 1 как начальное число по умолчанию для индексов массива.

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

Объявление динамического массива:

Dim Имя_Массива ( ) As Тип_Элементов

ReDim Имя_Массива (N, M).

Элементы управления Excel – объекты графического интерфейса (кнопки, переключатели, флажки и др.), которые используются для автоматизации и упрощения работы (Рис. 1).

Добавление элементов управления:

Открыть рабочий лист MS Excel .

Перейти на вкладку Разработчик.

В группе Элементы управления нажать кнопку Вставить.

Рис. 1. Элементы управления

Панель управления содержит две категории элементов:

Элементы управления формы – объекты, входящие в состав самого программного обеспечения MS Excel;

Элементы ActiveX – надстройки, которые не входят в основную часть программного обеспечения, устанавливаются отдельно и могут поставляться с программами других фирм-производителей программного обеспечения.

Пример 1. Известны данные о количестве часов проката каждой из 5 различных марок легковых автомобилей 3 филиалами фирмы:

Марка

автомобиля

Количество часов проката:

Северный

филиал

Центральный филиал

Южный

филиал

Необходимо разработать пользовательский интерфейс и составить программу на VBA, с помощью которой будут осуществляться:

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

Определение:

марки автомобиля, которая по общим часам проката у трёх филиалов больше всего уступает другим маркам;

среднего количества часов проката одного автомобиля в Центральном филиале, количества марок автомобилей Центрального филиала, для которых количество часов проката не превышало найденного среднего показателя, и марок таких автомобилей.

Вывод полученных результатов на тот же рабочий лист.

Последовательность выполнения

На первом рабочем листе сформируем таблицу и введём названия пяти марок автомобилей.

Рис. 2. Количество часов проката легковых автомобилей фирмы

Под таблицей разместим три кнопки CommandButton1, CommandButton2 и CommandButton3 из категории Элементы ActiveX из группы Элементы управления вкладки Разработчик.

Щёлкнув по кнопке Свойства группы Элементы управления установим для каждой кнопки значение свойства Caption: Ввод и вывод данных, Определить, Очистить, соответственно.

Дальнейшее редактирование элементов управления осуществляется в Режиме конструктора.

Значения количества часов проката будем вводить с помощью функции InputBox (см. лаб. работу № 2) и присваивать соответствующим элементам двумерного массива.

Щёлкнем мышью дважды по каждой кнопке и введём в модуле Лист1 программный код обработки события нажатия кнопок:

Результаты работы программы:

Рис. 3. Результат нажатия кнопки «Ввод и вывод данных»

Рис. 4. Результат нажатия кнопки «Определить»

Пример 2. Составить программу на VBA, с помощью которой будут осуществляться:

Ввод элементов матрицы размерности 34 и их вывод в ячейки рабочего листа (с точностью до 2 знаков после запятой)

Определение наименьшего по модулю элемента каждого столбца матрицы и произведения элементов, значения которых по модулю не превышают 1,5;

Вывод полученных результатов на тот же рабочий лист.

Последовательность выполнения

Разместим на рабочем листе две кнопки CommandButton1 и CommandButton2 из категории Элементы ActiveX из группы Элементы управления вкладки Разработчик.

Щёлкнув по кнопке Свойства группы Элементы управления установим для каждой кнопки значение свойства Caption: Вычислить,

Рис. 5. Матрица

Определить, соответственно.

Для обработки событий нажатия кнопок введём в модуле «Лист1» следующий программный код:

c

Результат работы программы:

Задания к лабораторной работе 4

Задание 1

В соответствии с вариантом задания (таблица 1) разработать пользовательский интерфейс и составить программу на VBA, с помощью которой будут осуществляться:

Ввод исходных данных двумерного массива (ввод наименований в ячейки первого столбца таблицы осуществляется вручную, численные данные массива вводятся через функцию InputBox) и их вывод в виде таблицы на рабочий лист.

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

Таблица 1

Задание

1

Известны данные о доходе магазина от продажи каждого из 5 наименований кофе за лето:

Название кофе

Стоимость

Июнь

Июль

Август

Определить:

общий доход, полученный от продажи каждого наименования кофе;

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

2

Известны данные о количестве часов проката каждого из 5 филиалов фирмы по прокату трёх видов спецтехники:

Название филиала

Количество часов проката

Экскаваторы

Бульдозеры

Эвакуаторы

Определить:

общее количество часов проката по каждому виду спецтехники;

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

3

Известны данные о зарплате 5 сотрудников фирмы за каждый месяц первого квартала:

ФИО

сотрудника

Зарплата

Январь

Февраль

Март

Определить:

общую зарплату всех сотрудников за каждый месяц;

среднюю зарплату сотрудников фирмы, полученную за первый месяц квартала, число и фамилии сотрудников, у которых зарплата за первый месяц квартала превысила найденный средний показатель.

4

Известны данные о количестве жильцов, проживающих в каждой из 3 квартир 5-этажного дома:

Номер

этажа

Число жильцов

Первая

квартира

Вторая

квартира

Третья

квартира

Определить:

для каждого этажа – квартиру, в которой проживает наибольшее число жильцов;

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

5

Известны данные о доходах каждого из 5 магазинов фирмы за последние 3 года:

Название магазина

Доход

2010

2011

2012

Определить:

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

для каждого магазина – год, за который этот магазин получил минимальный доход.

6

Известны данные о командировочных расходах 5 отделов предприятия за 3 квартала текущего года:

Название отдела

Командировочные расходы

1-ый квартал

2-ой квартал

3-ий квартал

Определить:

общую сумму командировочных расходов каждого отдела предприятия за 3 квартала;

название отдела, у которого наименьшие командировочные расходы за 3 квартала.

7

Известны данные о количестве дней проката каждого из 5 видов туристического снаряжения 3 филиалами фирмы:

Название

снаряжения

Количество дней проката

Филиал 1

Филиал 2

Филиал 3

Определить:

общее количество дней проката туристического снаряжения фирмы;

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

8

Известны данные о количестве студентов, обучающихся на каждом из 5 курсов 3 институтов университета:

Курс

Количество студентов

Автодорожный

институт

Лесотехнический

институт

Институт транспорта



Страницы: 1 | 2 | Весь текст