Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КИТ_лабораторные_VBA.doc
Скачиваний:
174
Добавлен:
11.05.2015
Размер:
3.07 Mб
Скачать

5.3 Примеры операций с рабочими листами ms Excel

Во многих случаях данные, требующие обработки, размещаются на нескольких рабочих листах MS Excel. Если требуется указать рабочий лист, на котором находится ячейка, то перед ссылкой на нее (т.е. перед словом Range или Cells) указывается слово Worksheets("имя_листа").

Пример 5.7 – На рабочем листе Лист1 в столбец введено несколько чисел. Курсор находится в одной из ячеек с этими числами. Требуется скопировать на другой рабочий лист (имя листа – Лист5) все числа, превышающие 25. Числа должны копироваться в столбец E, начиная с ячейки E2. Между числами не должно быть пустых ячеек. Другими словами, если из десяти заданных чисел только три числа превысят 25, то они должны быть выведены в ячейки E2, E3 и E4 на рабочем листе Лист5.

Sub primer5_7()

Set d=Selection.CurrentRegion

m=d.Rows.Count

Set vyvod = Worksheets("Лист5").Range("E2")

j = 0

For i = 1 To m

x = d.Cells(i, 1).Value

If x > 25 Then

j = j + 1

vyvod.Cells(j, 1) = x

End If

Next i

End Sub

В операторе Set d=Selection.CurrentRegion переменная d связывается с заполненным диапазоном ячеек, содержащим выделенную ячейку. Затем в операторе m=d.Rows.Count переменной m присваивается количество строк в заполненном диапазоне, т.е. количество чисел в столбце. В операторе Set vyvod = Worksheets("Лист5").Range("E2") переменная vyvod связывается с ячейкой E2 на рабочем листе Лист5. Эта переменная будет затем использоваться для ссылок на ячейки, в которые будут выводиться отобранные числа. Переменная j – номер строки на рабочем листе Лист5 (начиная с ячейки E2), куда будет копироваться число из исходного набора данных. Сначала эта переменная принимается равной нулю. Цикл For i = 1 To m используется для перебора ячеек с числами. В операторе x = d.Cells(i, 1).Value значение ячейки из i-й строки текущего столбца присваивается переменной x. При этом не требуется указывать, что ячейка находится на рабочем листе Лист1, так как этот рабочий лист – текущий. Если значение x превышает 25, то переменная j увеличивается на единицу, и переменная x выводится в соответствующую ячейку рабочего листа Лист5.

Примечание – Можно было не использовать переменную vyvod, а указать оператор вывода отобранных чисел в ячейку следующим образом: Worksheets("Лист5").Range("E2"). Cells(j, 1) = x.

Пример 5.8 – Пусть в условиях примера 5.7 рабочий лист Лист5, на который требуется выводить отобранные числа, еще не существует. Программа в этом случае будет следующей.

Sub primer5_8()

Set d=Selection.CurrentRegion

m=d.Rows.Count

Set NewSheet = Worksheets.Add

NewSheet.Name = "Лист5"

Worksheets("Лист1").Activate

Set vyvod = Worksheets("Лист5").Range("E2")

j = 0

… ‘См. пример 5.7

End Sub

Здесь в операторе Set NewSheet = Worksheets.Add создается новый рабочий лист. При этом он становится текущим. В операторе NewSheet.Name = "Лист5" ему присваивается имя Лист5. В операторе Worksheets("Лист1").Activate текущим становится рабочий лист Лист1. Последующий текст программы такой же, как в примере 5.7.

В данном случае важно, чтобы оператор Set d=Selection.CurrentRegion был указан до оператора Set NewSheet = Worksheets.Add. Это необходимо, чтобы программа определила текущий диапазон ячеек (и «запомнила» его в переменной d), прежде чем текущим станет другой (новый) рабочий лист.

Пример 5.9 – В условиях примера 5.4 требуется вывести перечень отобранных студентов на новый рабочий лист с именем Отобранные. На этом листе фамилии студентов должны выводиться в столбец A (начиная с ячейки A1), а средние баллы – в столбец B.

Для этого необходимо предусмотреть в программе создание рабочего листа с именем Отобранные (аналогично примеру 5.8). Операторы вывода результатов в ячейки рабочего листа будут иметь следующий вид:

Worksheets("Отобранные").Cells(k, 1).Value = d.Cells(i, 1).Value

Worksheets("Отобранные").Cells(k, 2).Value = srednee

Пример 5.10 – Пусть в условиях примера 5.6 информация о ценах на товары хранится на отдельном рабочем листе с именем Цены. Названия товаров указаны в столбце A, а цены – в столбце B.

В программе, приведенной в примере 5.6, достаточно заменить оператор, задающий диапазон ячеек с ценами, на следующий:

Set d2 = Worksheets("Цены").Range("A1").CurrentRegion