Média VBA - AVERAGE, AVERAGEA, AVERAGEIF

Este tutorial mostrará como usar a função Excel Average no VBA.

A função AVERAGE do Excel é usada para calcular uma média de um intervalo de células em sua planilha que contém valores. No VBA, ele é acessado através do método WorksheetFunction.

MÉDIA de planilhaFunção

O objeto WorksheetFunction pode ser usado para chamar a maioria das funções do Excel que estão disponíveis na caixa de diálogo Inserir Função no Excel. A função AVERAGE é uma delas.

123 Sub TestFunctionIntervalo ("D33") = Application.WorksheetFunction.Aadise ("D1: D32")End Sub

Você pode ter até 30 argumentos na função AVERAGE. Cada um dos argumentos deve se referir a um intervalo de células.

Este exemplo abaixo irá produzir a média da soma das células B11 a N11

123 Sub TestA Average ()Range ("O11") = Application.WorksheetFunction.Aadise (Range ("B11: N11"))End Sub

O exemplo abaixo irá produzir uma média da soma das células em B11 a N11 e a soma das células em B12: N12. Se você não digitar o objeto Aplicativo, ele será assumido.

123 Sub TestA Average ()Intervalo ("O11") = WorksheetFunction.Awhile (Intervalo ("B11: N11"), Intervalo ("B12: N12"))End Sub

Atribuindo um resultado MÉDIO a uma variável

Você pode querer usar o resultado de sua fórmula em outro lugar no código, em vez de gravá-lo diretamente em um intervalo do Excel. Se for esse o caso, você pode atribuir o resultado a uma variável para usar posteriormente em seu código.

1234567 Sub AssignA Average ()Dim result As Integer'Atribuir a variávelresultado = WorksheetFunction.Aadise (Range ("A10: N10"))'Mostra o resultadoMsgBox "A média das células neste intervalo é" e resultadoEnd Sub

AVERAGE com um objeto Range

Você pode atribuir um grupo de células ao objeto Range e, em seguida, usar esse objeto Range com o WorksheetFunction objeto.

123456789 Sub TestA AverageRange ()Dim rng como alcance'atribuir o intervalo de célulasDefinir rng = intervalo ("G2: G7")'use o intervalo na fórmulaIntervalo ("G8") = WorksheetFunction.Aadise (rng)'libere o objeto de alcanceDefinir rng = NadaEnd Sub

AVERAGE Multiple Range Objects

Da mesma forma, você pode calcular a média das células de vários objetos de intervalo.

123456789101112 Sub TestA AverageMultipleRanges ()Dim rngA como intervaloDim rngB como intervalo'atribuir o intervalo de célulasDefinir rngA = intervalo ("D2: D10")Definir rngB = intervalo ("E2: E10")'use o intervalo na fórmulaIntervalo ("E11") = WorksheetFunction.Aadise (rngA, rngB)'libere o objeto de alcanceDefinir rngA = NadaDefinir rngB = NadaEnd Sub

Usando AVERAGEA

A função AVERAGEA difere da função AVERAGE por criar uma média de todas as células em um intervalo, mesmo se uma das células contiver texto - ela substitui o texto por um zero e inclui isso no cálculo da média. A função AVERAGE ignora essa célula e não a considera no cálculo.

123 Sub TestA AverageA ()Intervalo ("B8) = Application.WorksheetFunction.AadiseA (Intervalo (" A10: A11 "))End Sub

No exemplo abaixo, a função AVERAGE retorna um valor diferente para a função AVERAGEA quando o cálculo é usado nas células A10 a A11

A resposta para a fórmula MÉDIA é inferior à fórmula MÉDIA, pois substitui o texto em A11 por um zero e, portanto, calcula a média de 13 valores em vez dos 12 valores sobre os quais MÉDIA está calculando.

Usando AVERAGEIF

A função AVERAGEIF permite calcular a média da soma de um intervalo de células que atendem a determinados critérios.

123 Sub AverageIf ()Intervalo ("F31") = WorksheetFunction.AadiseIf (Intervalo ("F5: F30"), "Economia", Intervalo ("G5: G30"))End Sub

O procedimento acima apenas fará a média das células no intervalo G5: G30, onde a célula correspondente na coluna F contém a palavra ‘Economia’. Os critérios que você usa devem estar entre aspas.

Desvantagens de WorksheetFunction

Quando você usa o WorksheetFunction para calcular a média dos valores em um intervalo em sua planilha, um valor estático é retornado, não uma fórmula flexível. Isso significa que quando seus números no Excel mudam, o valor que foi retornado pelo WorksheetFunction não mudará.

No exemplo acima, o procedimento TestA Average criou a média de B11: M11 e colocou a resposta em N11. Como você pode ver na barra de fórmulas, esse resultado é uma figura e não uma fórmula.

Se algum dos valores mudar, portanto, no intervalo (B11: M11), os resultados em N11 irão NÃO mudança.

Em vez de usar o WorksheetFunction.Aadise, você pode usar o VBA para aplicar a função AVERAGE a uma célula usando o Fórmula ou FormulaR1C1 métodos.

Usando o Método da Fórmula

O método da fórmula permite que você aponte especificamente para um intervalo de células, por exemplo: B11: M11 conforme mostrado abaixo.

123 Sub TestA AverageFormula ()Intervalo ("N11"). Fórmula = "= Média (B11: M11)"End Sub

Usando o método FormulaR1C1

O método FomulaR1C1 é mais flexível, pois não o restringe a um determinado intervalo de células. O exemplo abaixo nos dará a mesma resposta que o anterior.

123 Sub TestA AverageFormula ()Intervalo ("N11"). Fórmula = "= Média (RC [-12]: RC [-1])"End Sub

No entanto, para tornar a fórmula mais flexível, poderíamos alterar o código para ficar assim:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Contagem (R [-11] C: R [-1] C)"End Sub

Onde quer que você esteja em sua planilha, a fórmula fará a média dos valores nas 12 células diretamente à esquerda dela e colocará a resposta em seu ActiveCell. O intervalo dentro da função AVERAGE deve ser referido usando a sintaxe de linha (R) e coluna (C).

Ambos os métodos permitem que você use fórmulas do Excel Dinâmico no VBA.

Agora haverá uma fórmula em N11 em vez de um valor.

wave wave wave wave wave