- •Содержание
- •Введение
- •1 Алгоритм и его свойства
- •2 Основные понятия VBA. Линейные алгоритмы
- •2.1 Элементы языка VBA
- •2.2 Типы данных VBA
- •2.3 Константы VBA
- •2.4 Переменные VBA
- •2.5 Выражения в VBA
- •2.6 Встроенные функции VBA
- •2.7 Оператор присваивания
- •3 Разветвляющиеся алгоритмы
- •3.1 Оператор IF и его формы записи
- •3.2 Типовые задачи разветвляющихся алгоритмов
- •4 Циклические алгоритмы
- •4.1 Оператор цикла For
- •Оператор цикла For Each
- •4.2 Оператор цикла Do
- •4.3 Вложенные циклы
- •5 Обработка массивов данных
- •5.1 Ввод-вывод массивов
- •Расположение данных в файле "dat.txt"
- •Расположение данных в файле "res.txt"
- •5.2 Программирование обработки одномерных массивов
- •5.3 Программирование обработки двумерных массивов
- •6.1 Лабораторная работа №1
- •6.2 Задание к расчетно-графической работе №1
- •6.3 Лабораторная работа №2
- •Обработка массивов данных на VBA
- •6.4 Задание к расчетно-графической работе №2
- •ЛИТЕРАТУРА
- •Окно проекта
- •Главное меню
- •Интеллектуальные возможности редактора кода
- •Операции сравнения
- •Конкатенация строк
- •Логические операторы VBA
- •Приоритеты выполнения операций при вычислении сложных выражений
- •Операторы пересчета
|
|
|
|
|
|
|
|
|
|
|
1,2 |
|
|
|
|
|
|
|
|
|
|
|
−3 |
|
|
x −1 при |
x < −1 |
1 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
3 |
+1 |
при −1 ≤x ≤ 0 |
0,8 |
|
|
|
|
|
|
|
|
|
|
|||||
|
S = |
|
|
0,6 |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
при |
x > 0 |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
0,4 |
|
|
|
|
|
|
|
|
|
|
|||
|
24x |
|
|
|
|
0,2 |
|
|
|
|
|
|
|
|
|
|
|||||
|
−2 |
|
≤ x ≤ 2 |
; ∆x = 0,1 |
|
|
|
|
|
|
|
|
|
|
|||||||
29) |
|
0 |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
-2 |
-1,6 |
-1,2 |
-0,8 |
-0,4 |
0 |
0,4 |
0,8 |
1,2 |
1,6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
3 |
|
|
|
|
|
|
|
|
|
1,2 |
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
+ 2 |
|
при x < −1 |
1 |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
при −1 ≤x ≤ 0 |
0,8 |
|
|
|
|
|
|
|
|
|
|
|
|
V = x |
|
|
|
|
|
π x |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
2 |
|
|
|
|
x > 0 |
0,6 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
( |
) |
при |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
sin |
|
|
|
2 |
0,4 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
0,2 |
|
|
|
|
|
|
|
|
|
|
|
|
−2 ≤ x ≤ 2 |
; ∆x = 0,1 |
|
|
|
|
|
|
|
|
|
|
|||||||||
30) |
0 |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
-2 |
-1,6 |
-1,2 |
-0,8 |
-0,4 |
0 |
0,4 |
0,8 |
1,2 |
1,6 |
2 |
6.3 Лабораторная работа №2
Обработка массивов данных на VBA
В лабораторной работе №2 одно задание. Задание для лабораторной работы №2.
Составить программу для определения среднего арифметического положительных чисел, расположенных в первых пяти строках и первых трех столбцах рабочего листа Excel. Вывести положительные числа в файл с именем «Res2.txt». Записать положительные числа в одномерный массив, отсортировать их по возрастанию и вывести полученный массив данных в файл «Res2.txt» и в первый столбец рабочего листа Excel, начиная с 11ой строки. Сохранить рабочую книгу Excel в файле с названием Lab2, а программу в файле Prog2.
Последовательность действий для выполнения лабораторной работы.
101
1.Запустите Excel. На первом листе рабочей книге наберите тестовые данные для отладки программы (например, так как показано на рисунке 6.4). Сохраните рабочую книгу Excel в своей папке под име-
нем Lab2.
Рисунок 6.4 - Пример тестовых данных для отладки программы
2. Вызвать редактор макроса VBA (комбинация клавиш Alt+Fl1) и набрать текст программы:
Sub Prog2()
Dim Mas() As Variant ' переменная Mas - одномерный массив Dim S As Single ' Объявляем рабочие переменные
Dim Kol As Integer, i As Integer, j As Integer
S = 0 ' переменная для вычисления суммы положительных чисел Kol = 0 'переменная для вычисления количества положительных чисел
For i = 1 To 5 Step 1 ' цикл для перебора первых пяти строк листаExcel For j = 1 To 3 Step 1 ' цикл для перебора первых трех столбцов листа If Cells(i, j) > 0 Then ' если число в ячейке положительное, то
S = S + Cells(i, j) : Kol = Kol + 1 ' добавляем его к сумме
End If ' и увеличиваем количествоположительных чисел на единицу Next j ' заканчиваем цикл по столбцам
Next i ' заканчиваем цикл по строкам ' выводим на лист ответ
102
Cells(1,5)="Сумма положительных чисел": Cells(1, 10) = S Cells(2, 5)="Количество положительных чисел": Cells(2, 10) = Kol
If Kol = 0 Then |
' если на листе нет положительных |
Cells(3, 5) = "Ошибка в данных" ' чисел - сообщаем об ошибке и |
|
Exit Sub |
' завершаем работу программы |
End If ' завершаем |
If Kol = 0 Then |
'на листе есть положительные числа - продолжаем работу |
|
Cells(3, 5) = "Cреднее арифметическое" |
|
Cells(3, 10) = S / Kol |
' выводим значение среднего арифметического |
Open "Res.txt" For Output As #1 ' открываем файл для вывода
'Примечание.
'Так как в имени файла путь не указан, то он будет
'сохраняться в папке "Мои документы"
'Чтобы файл сохранился в папке с книгой Excel, необходимо
'перед запуском программы выполнить сохранение
'файла с книгой Excel в свою папку
'вывод поясняющего текста в файл Res.txt
Print #1, "Положительные числа первых пяти строк и первых трех столбцов"
' резервируем место в оперативной памяти для массива Mas ReDim Mas(Kol – 1) ' первый элемент массива в VBA имеет индекс 0 k = -1
For i = 1 To 5 Step 1 ' просматриваем строки и столбцы заново
For j = 1 To 3 Step 1 |
|
|
If Cells(i, j) > 0 Then |
' |
если число положительное, |
k = k + 1: Mas(k) = Cells(i, j) |
' |
записываем его в массив |
Print #1, Mas(k) |
' |
и выводим в файл Res.txt |
End If |
|
|
Next j |
|
|
Next i |
|
|
103
' Сортировка массива Mas по возрастанию
For i = 0 To k - 1 Step 1
For j = 1 To k - i Step 1
If Mas(j - 1) > Mas(j) Then ' если слева число больше чем справа, r = Mas(j) ' меняем их местами
Mas(j) = Mas(j - 1) Mas(j - 1) = r
End If Next j Next i
' Вывод массива Mas в файл и на текущий рабочий лист
Print #1, "Отсортированный массив положительных чисел" Cells(10, 1) = "Отсортированный массив положительных чисел"
For i = 0 To k Step 1
Print #1, Mas(i) ' вывод элемента массива в файл Cells(i + 11, 1) = Mas(i) ' вывод элемента массива в столбец Excel
Next i
Close ' закрываем файл вывода
End Sub
3.Сохраните рабочую книгу Excel в своей папке под тем же именем - Lab2.
4.Запустите макрос «Prog2» на выполнение. Вид экрана после вы-
полнения программы приведен на рисунке 6.5. Содержание текстового файла «Res.txt» приведено на рисунке 6.6.
Примечание: чтобы файл «Res.txt» был доступен для просмотра, необходимо закрыть книгу Excel с макросом, или в редакторе макросов выполнить команду «Reset» меню «Run» (можно использовать панель инструментов).
104
Рисунок 6.5 - Вид рабочего листа Excel после выполнения программы
Положительные числа первых пяти строк и первых трех столбцов
5
5
5
1,5
8,5
Отсортированный массив положительных чисел
1,5
5
5
5
8,5
Рисунок 6.6 - Текстовый файл «Res.txt», полученный после выполнения программы Prog2
5.В тестовых данных на рабочем листе замените положительные числа нулями и заново запустите макрос на выполнение. Вид экрана после выполнения программы с такими числами приведен на рисунке 6.7.
105