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

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, т.е. столбец, следующий за оценками студентов).