Основы и принципы работы в VBA. Часть 3: Методические указания к выполнению лабораторных работ, страница 2

Как и обычные переменные, массивы должны быть объявлены. Для определения массива используется оператор Dim:

Dim A (100) As Integer

При таком описании массива его элементы индексируются (т. е. нумеруются), начиная с нуля.

Чтобы задать определенную размерность массива можно использовать зарезервированное слово To.

Элементы массива индексируются с того номера, с которого явно указан интервал изменения нижней и верхней границы номеров элементов массива:  

Dim A (1 To 100) As Integer

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

1-й с п о с о б. В ячейки электронной таблицы рабочего листа Excel введем числа (рис. 9.2), откроем окно программного кода и запишем в него программу, которая считывает данный массив чисел.

Программный код:

Option Explicit

Sub PR1 ()

Dim A(6) As Integer

Dim i As Integer

For i = 1 To 6

     A(i) = Cells(1, i)             ‘массив заполняется

Next i                                   ‘числами с рабочего листа Excel                          

End Sub

2-й с п о с о б. Массив можно заполнить с помощью генератора случайных чисел. Если требуется получить последовательность случайных целых чисел с равномерным законом распределения на интервале (a; b), то используется выражение: х = Int((b-a)*Rnd+a).

Фрагмент программы:

Randomize                               ‘инициализация генератора случайных чисел

    For i = 1 To 10 

Cells(1, i) = Int(Rnd * 10 – 5) ‘заполнение строки случайными числами от –5 до 5

 A(i) = Cells(1, i)                     ‘ заполнение массива

     Next i

В среде VBA удобно пользоваться различными рабочими листами в одной программе. Для установки нужного рабочего листа используется команда Worksheets(Имя листа).Select, Например:

Worksheets("Лист1").Select – переход на рабочий лист с именем "Лист1".

Пример 1. Вычислить среднее арифметическое значение и количество четных элементов массива А,  состоящего  из N целых чисел, а также среднее геометрическое значение и количество нечетных элементов этого же массива. Массив считать с рабочего листа Excel.

Вычисление суммы, произведения и количества элементов в одномерных массивах производится в цикле.

Программный код:

Option Explicit

Sub PR1 ( )

Dim i As Integer, S As Integer, K1, K2, N As Integer

Dim P As  Double, SA As Double, SG As Double

Dim A(50) As Integer

N = Val(InputBox("Введите N"))

S = 0 : P = 1: K1 = 0: K2 = 0          ‘ начальные значения

For i = 1 To N

    A(i) = Cells(1, i)                          ‘ ввод массива с рабочего листа Excel

Next i

For i = 1 To  N

    If A(i) mod 2 = 0 Then

            S = S + A(i)                         ‘ вычисление суммы и

            K1 = K1 + 1                         ‘ количества четных элементов

    Else

            P = P * A(i)                          ‘ вычисление произведения

            K2 = K2 +1                          ‘ количества нечетных элементов

    End If

 Next i

               MsgBox("S=" & S & "  K1=" & K1)

               MsgBox("PR=" & PR & "  K2=" & K2)

        End Sub

П р и м е р  2. Прочитать с рабочего листа Excel одномерный массив Y.  Найти минимальный и максимальный элементы этого массива и поменять их местами. Новый массив поместить на тот же рабочий лист ниже первого массива. Минимальный и максимальный элементы также напечатать на этом рабо-чем листе.

За начальное значение максимального и минимального элемента принять первый элемент массива, например: Max = Y(1);  Min = Y(1).

Алгоритм  расчета максимального и минимального элемента массива показан на рис. 9.4.

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

Программный код:

Option Explicit

Sub PR2 ()

Dim A (10) As Integer

Dim I As Integer, R As Integer

Dim Min As Integer, Max As Integer

Dim imin As Integer, imax As Integer

           For i = 1 To 10

                 A(i) = Cells(1, i)                    ‘ ввод массива

           Next i

Min = A(1): Max = a(1) 

For i = 1 To 10

    If A(i) > Max Then

        Max = A(i): k = i        ‘ вычисление максимума  и его номера

    End If

    If A(i) < Min Then

        Min = A(i): n = i        ‘ вычисление минимума и его номера

    End If

Next i

Cells (2, 1) = "Max="

Cells(2, 2) = Max

Cells(2, 4) = "imax"

Cells(2, 5) = imax

Cells(3, 1) = "Min="

Cells(3, 2) = Min

Cells(3, 4) = "imin"

Cells(3, 5) = imin

R = A(k)                                     ‘ меняем местами

A(k) = A(n): A(n) = R               ‘ максимальный и минимальный элементы

         For i = 1 To 10

               Cells(5, i) = A(i)         ‘ вывод нового массива

         Next i

End Sub

Результаты вычисления минимального и максимального элементов массива представлены на листе Excel (рис. 9.5).

9.2. Индивидуальные задания

Задание 1. Разработать алгоритм и программу обработки одномерных массивов в соответствии с индивидуальным заданием (табл. 9.1). Ввод элементов массива выполнить с рабочего листа Excel. Напечатать исходный и результирующий массивы в две строки.


Таблица 9.1

Варианты индивидуальных заданий с использованием одномерного массива