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