Excel公式:加权中位数

时间:2017-01-18 17:39:32

标签: excel-formula

团队 -

我在细胞B2:B70中有权重,在细胞C2:C70中有数字。我试图找到一个加权中位数来填充C71细胞。使用= SUMPRODUCT($ B2:$ B70,C2:C70)/ SUM($ B2:$ B70)计算加权平均值 - 但我想不出加权中位数的优雅公式。也许我的速度非常慢。

提前致谢。

1 个答案:

答案 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