我有一个 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
然后将值放在 A1、B1 和 C1 中。
最后在 D1 中输入:
=AVr(A1,B1,C1)
编辑:
当然,这引出了一个问题:
如果值为 1.、2. 和 3......您是否期望 1.5 或 2.5 作为答案???