Примеры функций на VBA

advertisement
Лабораторная работа №5_4. Разработка процедур и функций
обработки массивов (диапазонов)
В качестве параметра в функциях обработки массивов используется
диапазон произвольных размерностей (A As Variant). При вызове функции
задается реальный диапазон. Если нужно получить реальные размерности
массива (диапазона) в функции используются следующие операторы: m =
a.Rows.Count (количество строк) и n = a.Columns.Count (количество столбцов).
Если функция в качестве результата должна возвратить массив чисел
имени функции необходимо присвоить имя возвращаемого массива.
Примеры функций на VBA
функция вычисления суммы элементов массива А
1-й способ
Public Function Сумма_массива(A As Variant)
‘ функция вычисления суммы элементов массива А
Dim s aS Variant, x As Variant
s=0
For Each x In A
s=s+x
Next x
Сумма_массива = s
End Function

2-й способ
Public Function SumMas(a As Variant)
‘ функция вычисления суммы элементов массива А
Dim m as Integer
Dim n as Integer
Dim r as Integer
Dim c as Integer
m = a.Rows.Count ' количество строк
n = a.Columns.Count 'количество столбцов
s=0
For r = 1 To m
For c = 1 To n
s = s + a(r, c)
Next c
Next r
SumMas=s
End Function
 функция подсчета количества положительных элементов массива А
Public Function CountP(a As Variant)
‘ функция подсчета количества положительных элементов массива А
Dim m as Integer
Dim n as Integer
Dim r as Integer
Dim c as Integer
m = a.Rows.Count
n = a.Columns.Count
k= 0
For r = 1 To m
For c = 1 To n
If a(r,c) > 0 Then k=k+1
Next c
Next r
CountP=k
End Function
 нахождения максимального и минимального значения массива А
Public Function max_min_A(a As Variant)
‘ функция нахождения максимального и минимального значения массива А
Dim m as Integer
Dim n as Integer
n = a.Columns.Count
m = a.Rows.Count
minimal = a(1, 1)
maximal = a(1, 1)
For r = 1 To m
For c = 1 To n
If a(r, c) < minimal Then minimal = a(r, c)
If a(r, c) > maximal Then maximal = a(r, c)
Next c
Next r
max_min_A = "Минимальный эл-т:" + Str(minimal) + ", максимальный эл-т:" +
Str(maximal)
End Function

упорядочивание одномерного массива по возрастанию значений
элементов
Public Function УПОРЯДОЧИТЬ_МАССИВ_ВОЗР(A As Variant)
‘ упорядочивание одномерного массива по возрастанию значений элементов
Dim n As Integer
Dim i As Integer
Dim j As Integer
n = a.Columns.Count
ReDim B(1 To n) As Variant
For i = 1 To n
b(i) = a(i)
Next i
For i = 1 To n
For j = 1 To n
If b(i) < b(j) Then
c = b(i)
b(i) = b(j)
b(j) = c
End If
Next j
Next i
УПОРЯДОЧИТЬ_МАССИВ_ВОЗР = B
End Function

нахождения минимального значения массива, расположенного в
заданном диапазоне C15:D20
Public Function Минимум_в_заданном()
‘ нахождения минимального значения в заданном диапазоне
Dim r As Integer, c As Integer, minimal As Variant
minimal = Cells(15, 3)
For r = 15 To 20
For c = 3 To 4
If Cells(r, c) < minimal Then
minimal = Cells(r, c)
End If
Next c
Next r
Минимум_в_заданном = minimal
End Function

процедура обнуления отрицательных элементов в выделенном
диапазоне
Public Sub Обнуление_отрицательных_в_выделенном()
‘ процедура обнуления отрицательных элементов в выделенном диапазоне
Dim i As Integer, j As Integer, n As Integer
m = Selection.Rows.Count
n = Selection.Columns.Count
For i = 1 To m
For j = 1 To n
If Selection(i, j) < 0 Then
Selection(i, j) = 0
End If
Next j
Next i
End Sub
Лабораторные задания
На VBA составить функции для:
1. нахождения суммы (количества) положительных (отрицательных)
элементов массива;
2. нахождения суммы (количества) элементов массива стоящих на четных
(нечетных) местах;
3. нахождения произведения отрицательных (положительных) элементов
массива, заданного в ячейках B10:D20;
4. подсчета количества отрицательных (положительных, нулевых, кратных k)
элементов массива;
5. нахождения суммы четных (нечетных, кратных n) элементов массива
выделенного диапазона ячеек;
6. нахождения НОД (НОК) элементов массива;
7. нахождения минимального (максимального) элемента массива и места его
расположения в массиве (номера строки и номера столбца);
8. нахождения максимального среди отрицательных (минимального среди
положительных элементов массива);
9. нахождения двух самых больших (самых маленьких) элементов массива;
10. упорядочивания массива А(n) по убыванию значений элементов.
Задания для самостоятельного решения
11. нахождения минимального и максимального элемента массива, выполнив
наименьшее число сравнений О(1.5n), где n число элементов в массиве;
12. расположения элементов массива в следующем порядке – положительные,
отрицательные и нулевые;
13. в упорядоченном массиве, найти такие два элемента, произведение которых
максимально (минимально);
14. из двух упорядоченных по возрастанию массивов, получить третий,
упорядоченный по возрастанию;
15. упорядочить строки двумерного массива А(m,n) по возрастанию значений
элементов К-го столбца.
Download