VBA COUNT (Função Contar)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 3, 2023

Este tutorial mostrará a você como usar a função COUNT do Excel em VBA

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

WorksheetFunction COUNT

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.

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

sintaxe funcao count

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

O exemplo abaixo contará quantas células estão preenchidas com valores que estão nas células D1 a D9

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

O exemplo abaixo 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 Application, ele será assumido.

Sub TesteCountMultiplo()
   Range("G8") = WorksheetFunction.Count(Range("G2:G7"), Range("H2:H7"))
End Sub

Atribuição de um Resultado de Contagem a uma Variável

Talvez você queira usar o resultado da fórmula em outro lugar do código, em vez de gravá-lo diretamente de volta no intervalo do Excel. Se esse for o caso, você poderá atribuir o resultado a uma variável para usá-lo posteriormente em seu código.

Sub AtribuirCount()
   Dim resultado As Integer
'Atribuir a variável   
   resultado = WorksheetFunction.Count(Range("H2:H11"))
'Mostrar o resultado
   MsgBox "O número de células preenchidas com valores é " & resultado
End Sub

 

atribuir valor variavel

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 objeto WorksheetFunction.

Sub TestarCountRange()
   Dim rng As Range
'atribuir o intervalo de células
   Set rng = Range("G2:G7")
'usar o intervalo na fórmula
   Range("G8") = WorksheetFunction.Count(rng)
'liberar o objeto range
  Set rng = Nothing
End Sub

COUNT com Vários Objetos Range

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

Sub TestarCountMultiplosRanges() 
   Dim rngA As Range 
   Dim rngB as Range
'atribuir os intervalos de células
   Set rngA = Range("D2:D10") 
   Set rngB = Range("E2:E10")   
'usar os intervalos na fórmula
Range("E11") = WorksheetFunction.Count(rngA, rngB)
 'liberar os objetos range
  Set rngA = Nothing 
  Set rngB = Nothing
End Sub

Usando COUNTA

A função COUNT contará apenas os VALORES NUMÉRICOS nas células, não contará a célula se ela tiver texto. Para contar as células que estão preenchidas com qualquer tipo de dados, precisamos usar a função COUNTA.

Sub TestarCountA()
   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 COUNTA, entretanto, contaria as células com texto e retornaria um valor de 5 na coluna B, enquanto ainda retornaria um valor de 4 na coluna C.

comparacao count counta

Uso de COUNTBLANK

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 nenhum dado.

Sub TestarCountBlank()   
   Range("B8") = Application.WorksheetFunction.CountBlank(Range("B1:B6")) 
End Sub

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

usando countblank

Uso da função COUNTIF

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

Sub TestarCountIf()
   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 só contará as células com valores se os critérios forem atendidos – maior que 0, maior que 100, maior que 1000 e maior que 10000. É necessário colocar os critérios entre aspas para que a fórmula funcione corretamente.

exemplos countif

Desvantagens da WorksheetFunction

Quando você usa a WorksheetFunction para contar os valores em um intervalo na planilha, é retornado um valor estático, não uma fórmula flexível. Isso significa que, quando seus números no Excel mudarem, o valor retornado pela WorksheetFunction não mudará.

nao atualiza formula

No exemplo acima, o procedimento TestarFuncaoCount contou as células da coluna H em que há valores presentes. Como você pode ver na barra de fórmulas, esse resultado é um número e não uma fórmula.

Portanto, se algum dos valores for alterado no Range(H2:H12), os resultados em H14 NÃO serão alterados.

Em vez de usar a WorksheetFunction.Count, você pode usar o VBA para aplicar uma função de contagem a uma célula usando os métodos Formula ou FormulaR1C1.

Como Usar o Método Formula

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

Sub TestarCountFormula
  Range("H14").Formula = "=Count(H2:H12)"
End Sub

usando metodo formula

Como Usar o Método FormulaR1C1

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

Sub TestarCountFormula()
   Range("H14").Formula = "=Count(R[-11]C:R[-1]C)"
End Sub

usando formula relativa

Entretanto, para tornar a fórmula mais flexível, poderíamos alterar o código para que ficasse assim:

Sub TestarCountFormula() 
   ActiveCell.FormulaR1C1 = "=Count(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 sua ActiveCell. O intervalo dentro da função COUNT deve ser referenciado usando a sintaxe de linha (R) e coluna (C).

Esses dois métodos permitem que você use fórmulas dinâmicas do Excel no VBA.

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

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA