Como calcular a média ponderada em vba (com exemplo)


Você pode usar a seguinte sintaxe básica para calcular uma média ponderada usando VBA:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

Este exemplo específico calcula uma média ponderada usando células no intervalo B2:B7 como valores e células no intervalo C2:C7 como pesos.

A média ponderada é então exibida na célula E2 .

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: calcular média ponderada usando VBA

Digamos que temos o seguinte conjunto de dados no Excel que mostra diversas vendas realizadas por funcionários de uma empresa:

Suponha que queremos calcular a média ponderada do preço, usando os valores da coluna Valor como valores e os valores da coluna Preço como pesos:

Podemos criar a seguinte macro para fazer isso:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

Quando executamos esta macro, recebemos a seguinte saída:

Observe que a célula E2 contém um valor de 9,705882 .

Podemos verificar se isso está correto calculando manualmente a média ponderada.

Lembre-se de que usamos a seguinte fórmula para a média ponderada:

Média ponderada = Σw i X i / Σw i

Ouro:

  • w i = valores de peso
  • X i = valores de dados

Podemos inserir os valores do nosso conjunto de dados nesta fórmula para calcular o preço médio ponderado:

  • Média ponderada = Σw i X i / Σw i
  • Média ponderada = (1*8 + 3*5 + 2*6 + 2*7 + 5*12 + 4*14) / (1+3+2+2+5+4)
  • Média de notas do aluno A = 9,705882

Isso corresponde ao valor que calculamos usando a macro.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

VBA: Como escrever funções AVERAGEIF e AVERAGEIFS
VBA: Como escrever funções SUMIF e SUMIFS
VBA: Como escrever funções COUNTIF e COUNTIFS

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *