- •Лабораторная работа №9 по курсу “Компьютерные информационные технологии” операции с ячейками рабочего листа excel в программах на языке vba
- •1 Ячейки как объекты. Основные способы ссылок на ячейки рабочего листа Excel
- •2 Операции с диапазонами ячеек
- •2.1 Диапазоны ячеек как объекты. Основные способы ссылок на диапазоны ячеек рабочего листа Excel
- •2.2 Работа с диапазонами ячеек, заданными явно
- •2.3 Работа с выделенными диапазонами ячеек
- •2.4 Работа с заполненными диапазонами ячеек
- •3 Примеры решения задач с использованием диапазонов ячеек
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 получают значения, равные количеству строк и столбцов этого диапазона. Дальнейшие действия выполняются аналогично примерам, рассмотренным выше.
2.4 Работа с заполненными диапазонами ячеек
Под заполненным диапазоном ячеек будем понимать прямоугольный диапазон ячеек, заполненный некоторыми данными (например, числами) и отделенный от других данных хотя бы одной свободной строкой и столбом. Как указано выше, ссылка на такой диапазон имеет вид: ячейка.CurrentRegion, где ячейка – ссылка на левый верхний угол этого диапазона (в форме Range или Cells).
Пример – Пусть требуется вычислить средние значения каждой строки некоторого диапазона ячеек, заполненного числами, и вывести эти средние значения справа от этого диапазона. Известно, что левый верхний угол этого диапазона – ячейка B1. Для решения задачи можно воспользоваться следующей программой:
Sub srednee_zapolnennyh_strok()
Set d = Range("B1").CurrentRegion
m = d.Rows.Count
n = d.Columns.Count
…См. предыдущие примеры…
Здесь переменной d присваивается заполненный данными сплошной диапазон ячеек, где B1 – левый верхний угол. Все последующие действия выполняются аналогично примерам, рассмотренным выше.
3 Примеры решения задач с использованием диапазонов ячеек
Пример – Пусть в столбце C, начиная с ячейки C7 (т.е. в ячейках C7, C8 и т.д.), введены фамилии студентов, а в столбце D (т.е. в ячейках D7, D8 и т.д.) – их оценки по некоторому предмету. Требуется получить в столбце F (начиная с ячейки F1) список студентов, имеющих оценку не ниже заданной. Заданная оценка вводится с клавиатуры.
Sub otbor()
Dim min_ocenka As Single
min_ocenka = InputBox("Введите минимально допустимую оценку")
Set d = Range("C7").CurrentRegion
m = d.Rows.Count
k = 0
For i = 1 To m
If d.Cells(i, 2).Value >= min_ocenka Then
k = k + 1
Cells(k, 6).Value = d.Cells(i, 1).Value
End If
Next i
End Sub
Здесь в операторе Set d = Range("C7").CurrentRegion переменной d присваивается диапазон заполненных ячеек, где левый верхний угол – ячейка C7. Переменная m получает значение – количество строк диапазона d (т.е. в данном примере – количество студентов, для которых введены данные). Затем выполняется сравнение значений ячеек d.Cells(i,2).Value (т.е. оценок студентов, так как они введены во втором столбце диапазона данных) с заданной величиной min_ocenka. Если заданное условие (d.Cells(i, 2).Value >= min_ocenka) выполняется, то фамилия студента выводится в столбец F (в шестой столбец рабочего листа). Переменная k – номер строки рабочего листа, куда выводится фамилия студента; при выводе каждой фамилии она увеличивается на единицу.
Следует обратить внимание на строку Cells(k, 6).Value = d.Cells(i, 1).Value. Здесь Cells(k, 6).Value – значение ячейки в k-й строке и шестом столбце (т.е. столбце F) рабочего листа Excel. Значение d.Cells(i, 1).Value – это значение ячейки в i-й строке и первом столбце диапазона d (т.е. заполненного данными диапазона, где левый верхний угол – ячейка C7).
Пример – Пусть в условиях предыдущего примера требуется выводить фамилии выбранных студентов в произвольное место на рабочем листе (начальная ячейка для вывода результатов должна запрашиваться в программе).
Sub otbor()
Dim min_ocenka As Single
min_ocenka = InputBox("Введите минимально допустимую оценку")
rez = InputBox("Введите начальную ячейку для вывода результатов")
Set d = Range("C7").CurrentRegion
Set vyvod = Range(rez)
m = d.Rows.Count
k = 0
For i = 1 To m
If d.Cells(i, 2).Value >= min_ocenka Then
k = k + 1
vyvod.Cells(k,1).Value = d.Cells(i, 1).Value
End If
Next i
End Sub
Здесь, например, если требуется выводить список выбранных студентов в столбец G, начиная с ячейки G3, то на запрос "Введите начальную ячейку для вывода результатов" следует ответить: G3. Указанная пользователем ячейка (объект) присваивается переменной vyvod. Ячейка для вывода результата (выбранной фамилии студента) задана как vyvod.Cells(k,1); это означает, что результат выводится в ячейку, расположенную в k-й строке от указанной пользователем ячейки, и в том же столбце, что указанная ячейка.
Пример – Пусть, как и в предыдущем примере, в столбце C, начиная с ячейки C7, введены фамилии студентов, а в столбце D – их оценки по некоторому предмету. Требуется для каждого студента, имеющего оценку не ниже заданной, в соответствующей ячейке столбца E (т.е. справа от оценки студента) выводить слово “принят”. Заданная оценка вводится с клавиатуры.
Sub priem()
Dim min_ocenka As Single
min_ocenka = InputBox("Введите минимально допустимую оценку")
Set d = Range("C7").CurrentRegion
m = d.Rows.Count
For i = 1 To m
If d.Cells(i, 2).Value >= min_ocenka Then
d.Cells(i, 3).Value = "принят"
End If
Next i
End Sub
Здесь оператор d.Cells(i, 3).Value = "принят" означает, что в ячейку d.Cells(i, 3) выводится слово “принят”. Ячейка d.Cells(i, 3) – это ячейка в i-й строке и третьем столбце относительно диапазона d. Так как начало диапазона d (его левый верхний угол) – это ячейка C7, номера строк в данном случае отсчитываются от седьмой строки, а обозначения столбцов – от столбца C (поэтому третий столбец в данном случае – это столбец E, т.е. столбец, следующий за оценками студентов).
