Анимация
JavaScript
|
Главная Библионтека Dim i, j, n As Integer, s As Double n - платеж.Rows.Count s = 0 For i = 1 To n s = s + платеж (i) / (1 + процент)((год(1) - год(1))/Зб5) Next i Доход = s End Function Решим с помощью функции Доход следующую задачу. Предположим, что 11.01.97 у вас берут в долг 10 ООО руб. и предлагают вернуть; 20.12.97 - 2 ООО руб., 18.10.98- 4 ООО руб., 12.04.99-7 ООО руб. Имеет ли смысл эта сделка при годовой ставке 10 %? Для решения этой задачи введем данные, как показано на рис. 10.1.
Рис. 10.1. Решение задачи о неравномерных платежах Ссуда введена в ячейке В2 со знаком минус, так как эти деньги у вас забирают в ячейку В8, где вычисляется разность между текущим объемом вклада и размером ссуды, введем формулу =Доход (В7 ; В2 : В5; D2 : D5). В данном случае найденное значение равно 857.91. Так как результат положителен, данная сделка выгодна. Отметим, что метод Rows возвращает строки диапазона платеж, а свойство Count считает число элементов объекта. Таким образом, плaтeж.Rows.Count определяет число строк в диапазоне платеж. Если требуется найти число столбцов диапазона платеж, то нужно использовать конструкцию плaтeж.Columns.Count. Рассмотрим пример использования оператора Exit For. Функция Тест ([2]) определяет номер первого вхождения элемента b в вектор а. Если среди компонент вектора а нет элементов, равных Ь, функция Тест принимает значение, равное минус единице. Function Тест(а As Variant, b As Variant) As Integer Dim i, n As Integer, t As Boolean n = a.Rows.Count*a.Columns.Count t = False For i = 1 To n If a(i) = b Then TecT = i t = True Exit For End If Next i If t = False Then Тест = -1 End Function Приведем еще один пример использования оператора цикла ([2]). Пусть нужно вычислить
где X - вектор из n компонент; b и с - матрицы размерности тхт, причем п = 3,т = 2. Введем в диапазон А1:АЗ компоненты вектора jc, а в диапазоны В1:С2 и D1:E2 - компоненты матриц Ьис соответственно. Найдем значение s тремя способами. Первый способ. На листе модуля вводится следующая функция пользователя: Option Base 1 Function Q(x, b, с As Variant) As Double Dim si, s2, s3 As Double, i, j, n, m As Integer n = X.Rows.Count m = b.Rows.Count si = 0 For i = I To n si = si + x(i) Next i s2 = 0 For i = 1 To m For j = 1 To m s2 = s2 + b(i, j) * с(i, j) Next j Next i s3 = 0 For i = 1 To n s3 = s3 + x(i) " 2 Next i Q = (2 * si + s2 " 2)/(l + s3) End Function В ячейку A8 введем формулу =Q(Al:A3;Bl:C2;DI:E2) Второй способ, в ячейку А6 введем формулу {=(2*CyMM(Al:A3)+CyMMnPOM3B(Bl:C2;Dl:E2) "2) /(1 + СУММКВ(А1:АЗ))} {-(2*СУММ(А1:АЗ)+ СУММ(В1:С2*01:Е2)2)/(1+СУММ(А1:А32))} Третий способ. На лист модуля вводится функция пользователя: Function S(x, Ъ, с As Variant) As Double Dim si, s2, s3 As Double SI = Application.Sum(x) s2 = Application.SumProduct(b, c) s3 = Application.SurnSq x) S = (2 * si + s2 " 2)/(1 + s3) End Function В ячейку A7 введем формулу =S(A1:A3;B1:C2;D1:E2) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [ 21 ] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |