- •Лабораторная работа №9 по курсу “Компьютерные информационные технологии” операции с ячейками рабочего листа excel в программах на языке vba
- •1 Ячейки как объекты. Основные способы ссылок на ячейки рабочего листа Excel
- •2 Операции с диапазонами ячеек
- •2.1 Диапазоны ячеек как объекты. Основные способы ссылок на диапазоны ячеек рабочего листа Excel
- •2.2 Работа с диапазонами ячеек, заданными явно
- •2.3 Работа с выделенными диапазонами ячеек
- •2.4 Работа с заполненными диапазонами ячеек
- •3 Примеры решения задач с использованием диапазонов ячеек
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получают значения, равные количеству строк и столбцов этого диапазона. Дальнейшие действия выполняются аналогично примерам, рассмотренным выше.