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.