VBA COUNT

Este tutorial mostrará como usar a função COUNT do Excel no VBA

A função VBA COUNT é usada para contar o número de células em sua planilha que contêm valores. Ele é acessado usando o método WorksheetFunction no VBA.

COUNT WorksheetFunction

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 COUNT é uma delas.

123 Sub TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Range ("D1: D32"))End Sub

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

Este exemplo abaixo contará quantas células são preenchidas com valores nas células D1 a D9

123 Sub TestCount ()Range ("D10") = Application.WorksheetFunction.Count (Range ("D1: D9"))End Sub

O exemplo a seguir contará quantos valores estão em um intervalo na coluna D e em um intervalo na coluna F. Se você não digitar o objeto Aplicativo, ele será assumido.

123 Sub TestCountMultiple ()Intervalo ("G8") = WorksheetFunction.Count (Intervalo ("G2: G7"), Intervalo ("H2: H7"))End Sub

Atribuindo um resultado de contagem a uma variável

Você pode querer usar o resultado de sua fórmula em outro lugar no código, em vez de escrevê-lo diretamente de volta para o 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 AssignCount ()Dim result As Integer'Atribuir a variávelresultado = WorksheetFunction.Count (Range ("H2: H11"))'Mostra o resultadoMsgBox "O número de células preenchidas com valores é" & resultadoEnd Sub

COUNT 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 TestCountRange ()Dim rng como alcance'atribuir o intervalo de célulasDefinir rng = intervalo ("G2: G7")'use o intervalo na fórmulaIntervalo ("G8") = WorksheetFunction.Count (rng)'libere o objeto de alcanceDefinir rng = NadaEnd Sub

COUNT objetos de alcance múltiplo

Da mesma forma, você pode contar quantas células são preenchidas com valores em vários Objetos de intervalo.

123456789101112 Sub TestCountMultipleRanges ()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órmulaRange ("E11") = WorksheetFunction.Count (rngA, rngB)'libere o objeto de alcanceDefinir rngA = NadaDefinir rngB = NadaEnd Sub

Usando CONT.valores

A contagem contará apenas os VALORES nas células, não contará a célula se a célula contiver texto. Para contar as células que são preenchidas com qualquer tipo de dados, precisaríamos usar a função CONT.valores.

123 Sub TestCountA ()Range ("B8) = Application.WorksheetFunction.CountA (Range (" B1: B6 "))End Sub

No exemplo abaixo, a função COUNT retornaria um zero, pois não há valores na coluna B, enquanto retornaria um 4 para a coluna C. A função CONT.valores, entretanto, contaria as células com Texto nelas e retornaria um valor de 5 na coluna B, embora ainda retorne um valor de 4 na coluna C.

Usando COUNTBLANKS

A função COUNTBLANKS contará apenas as células em branco no intervalo de células - ou seja, células que não contêm dados.

123 Sub TestCountBlank ()Range ("B8) = Application.WorksheetFunction.CountBlanks (Range (" B1: B6 "))End Sub

No exemplo abaixo, a coluna B não possui células em branco, enquanto a coluna C possui uma célula em branco.

Usando a função CONT.SE

Outra função de planilha que pode ser usada é a função CONT.SE.

123456 Sub TestCountIf ()Range ("H14") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 0")Range ("H15") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 100")Range ("H16") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 1000")Range ("H17") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 10000")End Sub

O procedimento acima contará apenas as células com valores nelas se os critérios forem correspondidos - maior que 0, maior que 100, maior que 1000 e maior que 10000. Você deve colocar os critérios entre aspas para que a fórmula funcione corretamente.

Desvantagens de WorksheetFunction

Quando você usa o WorksheetFunction para contar os 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 TestCount contou as células na coluna H onde um valor está presente. 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 (H2: H12), os resultados em H14 serão NÃO mudança.

Em vez de usar o WorksheetFunction.Count, você pode usar o VBA para aplicar uma função de contagem 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: H2: H12 conforme mostrado abaixo.

123 Sub TestCountFormulaIntervalo ("H14"). Fórmula = "= Contagem (H2: H12)"End Sub

Usando o método FormulaR1C1

O método FromulaR1C1 é 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 TestCountFormula ()Intervalo ("H14"). Fórmula = "= Contagem (R [-9] C: R [-1] C)"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 contará os valores nas 12 células diretamente acima dela e colocará a resposta em seu ActiveCell. O intervalo dentro da função COUNT 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 H14 em vez de um valor.

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

wave wave wave wave wave