2017-01-18 15 views
0

チーム -Excelの公式:加重中央値

私はセルB2:B70とセルC2:C70の数値を持っています。私は細胞C71を埋めるために重み付けされた中央値を見つけようとしています。加重平均は、= SUMPRODUCT($ B2:$ B70、C2:C70)/ SUM($ B2:$ B70)を使用して計算されていますが、加重平均についてはエレガントな式は考えられません。たぶん私はひどく遅いです。

ありがとうございます。

+0

必要なアレイを作成するには、vbaまたは少なくとも2つのヘルパー列が必要です。 –

+0

ヘルパーカラムソリューションを使用して幸いです – Mohammed

答えて

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