Abra o editor de macro, na árvore esquerda, em Módulos, insira um novo módulo e, no lado direito, cole isto:
Function cond_Variance(Condition As String, Data As Range, Categories As Range) As Double
Dim numbers() As Double
DataRows = Data.Rows.Count
CategoriesRows = Categories.Rows.Count
firstDataRow = Data.Row
firstDataColumn = Data.Column
firstCategoriesRow = Categories.Row
firstCategoriesColumn = Categories.Column
ReDim numbers(DataRows)
counter = 1
Total = 0
For i = firstCategoriesRow To firstCategoriesRow + CategoriesRows - 1
selectedcell = Cells(i, firstCategoriesColumn)
If selectedcell = Condition Then
numbers(counter) = Cells(i, firstDataColumn)
counter = counter + 1
Total = Total + Cells(i, firstDataColumn)
End If
Next i
counter = counter - 1
mean_value = Total / counter
vTotal = 0
For i = 1 To counter
nDiff = (numbers(i) - mean_value) * (numbers(i) - mean_value)
vTotal = vTotal + nDiff
Next i
cond_Variance = vTotal / counter
End Function
Agora, para o seu exemplo, na célula C2 você escreve:
=cond_Variance(B2,$A$2:$A$7,$B$2:$B$7)
Sobre os parâmetros:
- O primeiro é a Condição, neste caso
B2 is Orange
. - O próximo campo é o intervalo de dados numéricos, neste caso
$A$2:$A$7
- O último é a lista de categorias, neste caso
$B$2:$B$7