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.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave