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

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