2017-01-18 3 views
0

Команда -Формула Excel: средневзвешенная

У меня есть вес в ячейках B2: B70 и числа в ячейках C2: C70. Я пытаюсь найти взвешенную медиану, чтобы заполнить ячейку C71. Среднее значение рассчитывается с использованием = SUMPRODUCT ($ B2: $ B70, C2: C70)/SUM ($ B2: $ B70) - но я не могу придумать элегантную формулу для взвешенной медианы. Может быть, я ужасно медленный.

Заранее спасибо.

+0

Для создания необходимого массива потребуется vba или по меньшей мере два вспомогательных столбца. –

+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