首页 > 解决方案 > 两 (2) 个范围内差异的绝对值

问题描述

我希望使用 VBA 函数计算两 (2) 个命名范围内差异的绝对值之和。下面的公式计算了两 (2) 个范围内的差异之和,但我很难获得范围内差异之和的绝对值。

我已经尝试了任意数量的组合,ABS甚至是平方根的平方根,但都没有运气。结果在用户定义的函数中出现错误。

'Volatility Calculation

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

Rng0是在计算平滑因子的分数的分母中使用的值。上面的输出为Rng0差异总和提供了正确的值,但我正在寻找 VBA 公式中差异总和的绝对值。先感谢您。

标签: excelvbarange

解决方案


如果您尝试对范围求和,然后计算绝对值以获得差异,那么它看起来像这样:

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

但是,如果您试图获取范围内每个单元格的绝对值,请将其相加,然后得到差值,您必须遍历范围以使用循环获得 abs 值的总和,然后将两者相减。

编辑:这是一个简单的循环,可以执行您的公式。顺便说一句,公式在后台执行完全相同的操作,它使用循环来计算 sumproduct。

简单的自定义功能:

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

推荐阅读