Обработка массивов

В повседневной жизни часто приходится встречаться с информацией, представленной в табличном виде. Для обработки можно использовать электронные таблицы, а также VBA.

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

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

Использование массивов значительно упрощает работу с группами однотипных данных.

Все действия с массивами выполняются поэлементно, в цикле. Поскольку массив — это последовательность с известным числом элементов, удобнее использовать цикл For.

Пример. Вычислить средний рост по данным, записанным в электронной таблице.

Результат вычисления среднего роста будут записаны в ячейку B9.

Решение.

Sub средний_рост()
Dim Rost(6) As Double
Dim i As Integer
Dim Сумма, Среднее As Double
 
' ввод таблицы для обработки
For i = 1 To 6
Rost(i) = Cells(1 + i, 2).Value
Next i
 
' нахождение суммы чисел в таблице
Сумма = 0
For i = 1 To 6
Сумма = Сумма + Rost(i)
Next i
 
' вычисление среднего
Среднее = Сумма / 6
 
'вывод
Cells(9, 2).Value = Среднее
MsgBox (Среднее)
End Sub

Пояснение решения.

В строке Dim Rost(6) As Doubl объявляется массив чисел двойной точности именем Rost размерностью 6, то есть одномерная таблица Rost емкостью 6 (шесть) ячеек.

Аналогичным образом можно обрабатывать и двумерные массивы. 

Пример. Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали. Данные записаны в электронной таблице.

Решение.

Sub simetria()
Const n = 4
Dim i, j
Dim x(n, n)
Dim t, check As Boolean
For i = 1 To n
For j = 1 To n
x(i, j) = Cells(i, j)
Next
Next
t = True 'предположим, что матрица симметрична
i = 2
While t And (i < n)
j = 1
While (j < i) And (x(i, j) = x(j, i))
j = j + 1
Wend
t = (j = i)
i = i + 1
Wend
check = t
MsgBox check
End Sub