团队 -
我在细胞B2:B70中有权重,在细胞C2:C70中有数字。我试图找到一个加权中位数来填充C71细胞。使用= SUMPRODUCT($ B2:$ B70,C2:C70)/ SUM($ B2:$ B70)计算加权平均值 - 但我想不出加权中位数的优雅公式。也许我的速度非常慢。
提前致谢。
答案 0 :(得分:0)
我认为这会做你想要的。
Function WeightedMedian(ValueRange As Range, WeightRange As Range)
Dim MedianArray()
On Error GoTo WrongRanges
ArrayLength = Application.Sum(WeightRange)
ReDim MedianArray(1 To ArrayLength)
Counter = 0
ArrayCounter = 0
For Each ValueRangeCell In ValueRange
LoopCounter = LoopCounter + 1
FirstArrayPos = ArrayCounter + 1
ArrayCounter = ArrayCounter + Application.Index(WeightRange, LoopCounter)
For n = FirstArrayPos To ArrayCounter
MedianArray(n) = ValueRangeCell.Value
Next
Next
WeightedMedian = Application.Median(MedianArray)
Exit Function
WrongRanges:
WeightedMedian = CVErr(2016)
End Function