Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КИТ часть_1 (Лаб практикум) / КИТ_лр9_VBA_работа_с_ячейками.doc
Скачиваний:
45
Добавлен:
15.06.2014
Размер:
79.36 Кб
Скачать

2.2 Работа с диапазонами ячеек, заданными явно

Под явно заданными будем понимать диапазоны ячеек, заданные в форме RangeилиCells.

Пример– Пусть в ячейкиB1:E5 введены некоторые числа. Требуется вычислить средние значения каждой строки этого диапазона ячеек и вывести эти средние значения справа от диапазона. Другими словами, требуется вычислить среднее значение ячеекB1:E1 и вывести его в ячейкуF1, затем вычислить среднее значение ячеекB2:E2 и вывести его в ячейкуF2, и т.д. Для этого можно воспользоваться следующей программой:

Sub srednee_strok()

Set d = Range("B1:E5")

m = d.Rows.Count

n = d.Columns.Count

For i = 1 To m

Sum = 0

For j = 1 To n

Sum = Sum + d.Cells(i, j).Value

Next j

srednee = Sum / n

d.Cells(i, n + 1).Value = srednee

Next i

End Sub

Здесь переменной dприсваивается диапазон ячеекB1:E5. Переменныеmиnполучают значения, равные количеству строк и столбцов этого диапазона. Затем вычисляется среднее по каждой строке этого диапазона. Важно обратить внимание, что ссылкаCells(i,j) – это ссылка на ячейку с номером строкиiи номером столбцаj, причем номера строк и столбцов отсчитываются от левого верхнего угла заданного диапазона (в данном случае – от ячейки B1).

В операторе d.Cells(i,n+ 1).Value=sredneeвычисленное среднее значение выводится в ячейку с номером строкиiи номером столбцаn+1относительно диапазонаd, т.е. в столбец справа от этого диапазона.

Примечание– Если бы в программе отсутствовал операторSetd=Range("B1:E5"), то для ссылки на диапазон ячеек каждый раз требовалось бы указывать его. Например, для определения количества строк потребовалось бы указать:m=Range("B1:E5").Rows.Count.

Конечно, рассмотренную задачу можно было решить и многими другими способами. Например, можно было воспользоваться ссылкой в форме Cells:

Sub srednee_strok()

Set d = Range(Cells(1, 2), Cells(5, 5))

Здесь вместо обозначения ячейки B1 использовано обозначениеCells(1, 2), а вместоE5 -Cells(5, 5).

Рассмотрим еще один способ решения рассмотренной задачи: содержимое ячеек вводится в массив, который затем обрабатывается обычным образом.

Sub srednee_strok()

Dim a(1 To 10, 1 To 20) as single, srednie(1 To 10) as single

Set d = Range("B1:E5")

m = d.Rows.Count

n = d.Columns.Count

For i = 1 To m

For j = 1 To n

a(i, j) = d.Cells(i, j).Value

Next j

Next i

For i = 1 To m

Sum = 0

For j = 1 To n

Sum = Sum + a(i, j)

Next j

srednie(i) = Sum / n

Next i

For i = 1 To m

d.Cells(i, n + 1).Value = srednie(i)

Next i

End Sub

Здесь значения ячеек диапазона B1:E5 считываются в двумерный массивa. Затем вычисляются средние значения строк этого массива; эти средние значения сохраняются в массиве одномерном массивеsrednie. Элементы этого массива затем выводятся в ячейки справа от диапазонаB1:E5.

Примечание – В операторе dim размерность массивов a (10 строк, 20 столбцов) и srednie (10 элементов) задана произвольным образом (“с запасом”, т.е. таким образом, чтобы размеры этих массивов оказались не меньше необходимых).

2.3 Работа с выделенными диапазонами ячеек

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

Sub srednee_vydelennyh_strok()

Set d = Selection

m = d.Rows.Count

n = d.Columns.Count

For i = 1 To m

Sum = 0

For j = 1 To n

Sum = Sum + d.Cells(i, j).Value

Next j

srednee = Sum / n

d.Cells(i, n + 1).Value = srednee

Next i

End Sub

Здесь переменной dприсваивается диапазон ячеек, выделенный с помощью мыши (он обозначается какSelection). Переменныеmиnполучают значения, равные количеству строк и столбцов этого диапазона. Дальнейшие действия выполняются аналогично примерам, рассмотренным выше.