Vba: como escrever funções averageif e averageifs
Você pode usar os seguintes métodos para escrever funções AVERAGEIF e AVERAGEIFS usando VBA no Excel:
Método 1: função AVERAGEIF em VBA
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
Este exemplo específico calculará o valor médio no intervalo B2:B12 onde o valor correspondente no intervalo A2:A12 é igual a “Mavs” e, em seguida, atribuirá o resultado à célula E2 .
Método 2: função AVERAGEIFS em VBA
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
Este exemplo específico calculará o valor médio no intervalo C2:C12 onde o valor no intervalo A2:A12 é igual a “Mavs” e o valor no intervalo B2:B12 é maior que 20 e, em seguida, atribuirá o resultado à célula E2 . .
Os exemplos a seguir mostram como usar cada um desses métodos na prática com o seguinte conjunto de dados no Excel que contém informações sobre vários jogadores de basquete:
Exemplo 1: função AVERAGEIF em VBA
Digamos que queremos calcular o valor médio na coluna de pontos dos jogadores do time Mavs.
Podemos criar a seguinte macro para executar esta função AVERAGEIF:
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que a célula E2 contém um valor de 18,25 .
Isso nos diz que o valor médio na coluna de pontos para os jogadores do time Mavs é 18,25.
Podemos verificar se isso está correto calculando manualmente o valor médio dos pontos do jogador nos Mavs:
Média de pontos do jogador Mavs: (22 + 10 + 29 + 12) / 4 = 18,25 .
Exemplo 2: função AVERAGEIFS em VBA
Digamos que queremos calcular o valor médio na coluna de assistências para jogadores que atendem aos seguintes critérios:
- O jogador faz parte da equipe Mavs.
- O jogador marcou mais de 20 pontos.
Podemos criar a seguinte macro para executar esta função AVERAGEIFS:
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
Quando executamos esta macro, recebemos a seguinte saída:
Observe que a célula E2 contém o valor 9 .
Isso nos diz que a média de assistências entre os jogadores que fazem parte do time Mavs e que marcaram mais de 20 pontos é 9.
Nota : Neste exemplo, criamos uma função AVERAGEIFS usando dois intervalos de critérios, mas você pode usar quantos intervalos de critérios desejar no método WorksheetFunction.AverageIfs .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:
VBA: Como calcular o valor médio do intervalo
VBA: Como escrever funções SUMIF e SUMIFS
VBA: Como escrever funções COUNTIF e COUNTIFS