Абсолютная величина различий в двух (2) диапазонах - PullRequest
0 голосов
/ 13 мая 2019

Я рассчитываю вычислить сумму абсолютных значений разностей в двух (2) именованных диапазонах, используя функцию VBA. Приведенная ниже формула вычисляет сумму разностей в двух (2) диапазонах, но у меня возникают трудности с получением абсолютного значения суммы разностей в диапазонах.

Я попробовал любое количество комбинаций ABS или даже квадратный корень квадратов без удачи. Результат дает ошибку в пользовательской функции.

'Volatility Calculation

Rng0 = WorksheetFunction.Sum(Range(N0Addr)) - WorksheetFunction.Sum(Range(N1Addr))

Rng0 - это значение, которое будет использоваться в знаменателе дроби, вычисляющей коэффициент сглаживания. Приведенный выше вывод для Rng0 предоставляет правильное значение для суммы разностей, но я ищу абсолютное значение суммы разностей в формуле VBA. Заранее спасибо.

1 Ответ

0 голосов
/ 14 мая 2019

Если вы пытаетесь суммировать диапазон и затем вычислить абсолютное значение, чтобы получить разницу, то это будет выглядеть так:

Rng0 = Abs(WorksheetFunction.Sum(Range(N0Addr))) - Abs(WorksheetFunction.Sum(Range(N1Addr)))

Но если вы пытаетесь получить абсолютное значение каждой ячейкив диапазоне, суммируйте его, затем получите разницу, которую вам нужно было бы перебрать в диапазоне, чтобы получить сумму значений abs с помощью цикла, а затем вычесть их.

Редактировать: Вот простой цикл, который выполняетчто делает твоя формулаКстати, формула делает то же самое в фоновом режиме, она использует цикл для вычисления конечного продукта.

Простая пользовательская функция:

Public Function MyFunction(r1 As Range, r2 As Range)

    For i = 1 To r1.Count
        MyFunction = MyFunction + Abs(r1(i) - r2(i))
    Next

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...