从三个参数中获取两个最接近参数的值



我有一个 excel 电子表格,其中数据分为三列:

0.89  1.2   0.96
12.3  14.7  20.2

我需要一个函数来识别三个项目中最接近的两个项目,这样我就可以在它们之间平均。

结果应该是:

0.925
13.5

类似=AVERAGE(__yourFunction__(A1:A3,2))

我希望有比消除MAX(ABS(A1-A2),ABS(A1-A3),ABS(A3-A2))更好的方法

首先在标准模块中输入以下 UDF:

Public Function AVr(r1 As Range, r2 As Range, r3 As Range) As Variant
    v1 = r1.Value
    v2 = r2.Value
    v3 = r3.Value
    d12 = Abs(v1 - v2)
    d13 = Abs(v1 - v3)
    d23 = Abs(v2 - v3)
    mn = Application.WorksheetFunction.Min(d12, d13, d23)
    If mn = d12 Then
        AVr = (v1 + v2) / 2
        Exit Function
    End If
    If mn = d13 Then
        AVr = (v1 + v3) / 2
        Exit Function
    End If
    AVr = (v2 + v3) / 2
End Function

然后将值放在 A1B1C1 中。

最后在 D1 中输入:

=AVr(A1,B1,C1)

编辑:

当然,这引出了一个问题:

如果值为 1.、2. 和 3......您是否期望 1.5 或 2.5 作为答案???

最新更新