Добрый день
Для решения статистической задачи (создание отчета), ранее использовал функцию Rate, но учитывая некоторые особенности инвестиционных потоков нужно перейти на IRR. вВсе решалось пр помощи запросов и построителя функций.
В качестве исходника стоит запрос, где представлен массив данных как того требует условие функции, но почему-то при запуске функция не распознается. Подскажите, как это все таки побороть при помощи запросов, а не VBA?
Заранее признателен
Эта функция принадлежит VBA, а не SQL, поэтому она и не распознается. Надо создавать глобальную функцию ArrNew и описывать ее в VBA.
Функция должна быть прописана в модуле VBA, а не формы.
Public Function arrNew(arrString) As Variant Dim arr, i As Long, n As Long, ret Dim Values() As Double On Error GoTo 999 arr = Split(arrString, ";") n = UBound(arr) ReDim Values(n) For i = 0 To n Values(i) = CDbl(arr(i)) Next arrNew = Format(IRR(Values()) * 100, "#0.00") Exit Function 999: Err.Clear arrNew = 0 End Function
Да, запара:-)
Благодарю
Перестроил
Запустил
Работает, но выдает только 0
Есть подозрение, что он рассматривает в итеррациях только одно значение, а не массив.
Подскажите, как корректно перестроить эту функцию, если есть массив из 2-х полей (группа инвестиций и суммы), где:
- группа инвестиций - поле группировки инвестиций, где группировок может быть неограничено;
- суммы - массив данных, в пределах одной группировки, где идут сумма инвестиции (с "минусом") и суммы ежемесячных возвратов, по количеству месяцев погашения, причем суммы ежемесячных погашений и количесво месяцев для каждой инвестиции разное.
К сожалению, пример массива не смог прикрутить
Надо в качестве первого значения ввести отрицательное, например, -2000. Следующее может быть положительным: 5000.