Hoje a dica é bem simples, embora os fundamentos apresentados sejam de grande aplicabilidade na manipulação avançada do Excel.
Para desenvolvermos esse nosso projeto vamos trabalhar com fórmulas, só que são fórmulas que não são nativas do Excel, ou seja, nós é que vamos criar essas fórmulas. São as chamadas “Fórmulas Personalizadas ou Desenvolvidas pelo usuário“.
Essas fórmulas personalizadas nada mais são do que um código desenvolvido no ambiente VBA para ser chamado diretamente na célula onde queremos o resultado. Como fazer isso? Ao invés de criarmos uma macro simples através de uma subrotina (Sub) devemos criar uma função (Function). Por quê? Eu explico.
As subrotinas são macros que executam uma série de eventos porém não carregam consigo resultado algum, elas criam esses resultados e tudo mais, porém só os retorna se nós criarmos mecanismos para isso. As funções já são diferentes. Elas tem a capacidade de carregar todo o resultado calculado dentro dela. E a fórmula nada mais é do que o resultado de um cálculo em uma função.
A Função pode carregar critérios para executar seus cálculos. Um exemplo é a SOMA(A1:A4). Nessa fórmula é informado os valores presentes nas células A1, A2, A3 e A4. O cálculo é feito com base neles e o resultado é informado na célula onde a fórmula foi digitada.
Bem, é basicamente isso. No nosso exemplo prático de hoje, vamos desenvolver uma função que conte todas as células em um determinado intervalo que tenha uma cor especÃfica. Esta é uma das várias maneiras de contar do Excel.
Abra o Ambiente Visual Basic (ALT + F11) e insira um Módulo. Digite o seguinte código nele:
Function ContaCelulaColorida(rngColorInfo As Range, Intervalo As Range) As Long
Dim rConta As Range
For Each rConta In Intervalo.Cells
If rConta.Interior.ColorIndex = rngColorInfo.Interior.ColorIndex Then
ContaCelulaColorida = ContaCelulaColorida + 1
End If
Next
End Function
Pronto. Só isso!
Agora crie uma tabela com várias células coloridas. E crie ao lado outra tabelinha para exibir a contagem das células. Nesta tabelinha, coloque uma coluna com as cores a ser contadas e outra com o resultado da contagem. E na célula correspondente, digite a fórmula. Assim:
ContaCelulaColorida (rngColorInfo, Intervalo)
Onde:
rngColorInfo é a célula que contém a cor a ser procurada;
Intervalo é o conjunto de células coloridas que deverão ser contadas.
Sua planilha deve ficar parecida com a figura abaixo.
Esta dica funciona para as células que nós definimos sua cor de fundo manualmente. Existem os casos que as células são pintadas automaticamente pela formatação condicional. Quando for assim, leia este post aqui.
Espero que tenham gostado. Façam o download do arquivo de exemplo utilizado neste artigo. O link está no final desta matéria.
Um abraço a todos.




Imprimir

![ContaCelulasColoridas[1]](http://www.exceldoseujeito.com.br/wp-content/themes/vertigo2/images/download-anexos.jpg)



olá!
Gostei muito da dica e consegui aplicá-la, mas gostaria de um aprimoramento.
Gostaria que a contagem fosse atualizada se eu alterar a cor da célula, o que não consegui. Se eu mudar a cor de uma das células, o valor não muda.
Espero que você possa me ajudar!
Obrigada!
Obrigado.
Veja a solução neste tópico http://www.exceldoseujeito.com.br/2008/11/21/contar-celulas-coloridas/#comment-311
Pode te ajudar.
Abraço
Olá, de fato muito boa a dica
mas sou iniciante e gostaria de algo mais simples
qual a função para contar o total de células coloridas no intervalo? de qualquer cor
por exemplo, em um intervalo de 5 celulas tenho duas verdes e uma amarela, gostaria que o resultado fosse 3
Além disso, como faço para multiplicar os valores das células coloridas? novamente de qualquer cor
O valor das células verdes eh 5 e 3 e da célula amarela é 1, gostaria que o resultado fosse 15
Obrigado
Cara… numa breve oportunidade, postarei um tutorial básico para iniciantes no VBA.
Essas funções que você precisa em sua planilha podem perfeitamente ser adaptadas desse código original. Enfim, inclusive, nos comentários deste artigo já apresentei soluções para SOMAR o conteúdo das células coloridas. Por aÃ, você pode adaptar para multiplicação. E quanto, a inclusão de todas as células coloridas no somatório, você deve, no código, restringir as células diferentes de interior.colorindex = -4142.
Espero ter ajudado.
Abraço
Olá…gostaria de saber como fazer para q o Excel não arredonde. Estou usando a formula para multiplicar e ele está arredondando os valos, sendo q eu so posso usar 2 casa apos a virgula, pois é uma planilha já montada e dependo do valor final.
Desde já agradeço!
Oi Thamyres,
Existem várias maneiras de obter este resultado. Segue uma dica:
Primeiro selecione todas as células onde estão digitados os seus valores a multiplicar e onde estarão os resultados.
Em seguida, vá ao menu Formatar > Células…
Na tela que será exibida, selecione a aba Número, e depois na caixa Categoria, escolha Número. Nas opções que surgirão à direita da tela, digite o número de casas decimais que deseja, no seu caso, 2 (duas).
Abraço.
Olá, estou a criar uma base de dados para contagem de féias, em que uso células com cores. Você ajudou-me imesno, só não consigo que o total actualize automaticamente. Ou seja, se eu adicionar ou retirar células com cor, o excel não faz a correcção automática.
Vi em cima num post que tinha de inserir uma 2ª fórmula nas macros, mas não sei em que linha inserir.
Pode-me ajudar?
Cumps. from portugal
Ola..como faço para contar corres em formatção condicional??
abç
http://www.exceldoseujeito.com.br/2010/07/03/contar-celulas-coloridas-pela-formatacao-condicional/
Olá, estou a criar uma base de dados para contagem de férias, em que uso células com cores. Você ajudou-me imesno, só não consigo que o total actualize automaticamente. Ou seja, se eu adicionar ou retirar células com côr, o excel não faz a correcção automática.
Vi em cima num post que tinha de inserir uma 2ª fórmula nas macros, mas não sei em que linha inserir.
Pode-me ajudar?
Cumps. from portugal
Daniel, todo o código para esta função foi descrito aqui neste artigo para ser inserido em um Módulo Global.
O código descrito aqui nos comentários (transcrito abaixo) é para ser digitado no módulo da própria planilha que você quer contar as células coloridas:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)ActiveSheet.Calculate
End Sub
Exemplo: Se você está utilizando uma planilha chamada “Plan1″, você pode observar que dentro do ambiente VBA (Projeto – VBAProject) existe, por padrão:
Microsoft Excel Objetos
EstaPasta_de_trabalho
Plan1 (Plan1)
Plan2 (Plan2)
Plan3 (Plan3)
Módulos
Módulo1
Dê um duplo clique em Plan1 e será exibida o “source code” desta planilha. Digite o código descrito acima neste espaço.
Espero que tenha ajudado,
Abraço
Efectivamente não está a funcionar.
Não sei o que estou a fazer mal, vou descrever o meu processo:
Na célula que qeuero a soma das cores tenho:
=ContaCelulaColorida(E2;C1:C16) em que E2 é uma célula solta com a cor que quero contar
No VBA criei o módulo1:
Function ContaCelulaColorida(rngColorInfo As Range, Intervalo As Range) As Long
Dim rConta As Range
For Each rConta In Intervalo.Cells
If rConta.Interior.ColorIndex = rngColorInfo.Interior.ColorIndex Then
ContaCelulaColorida = ContaCelulaColorida + rConta.Value
End If
Next
End Function
No VBA em “folha1″ criei:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub
Na folha de cálculo o total de cores aparece agora como “0″.
Pode-me dar uma ajuda?
Muito obrigado
Daniel,
Você quer contar a quantidade total de células com uma determinada cor ou calcular a soma total de seus conteúdos?
Se deseja a soma dos valores de seus conteúdos… ok… deixe com está… mas teremos que ver o que possa estar acontecendo mais profundamente porque o código descrito está perfeitamente correto.
Mas se você deseja apenas contar quantas células com a cor informada estã aparecendo no intervalo. Você deve substituir a linha:
ContaCelulaColorida = ContaCelulaColorida + rConta.Value
Por:
ContaCelulaColorida = ContaCelulaColorida + 1
Espero ter ajudado. Se ainda tiver dúvida, pode escrever.
Abraço.
Agradecia imenso que me ajudasse pois tenho um trabalho pendente e isto ia ser crucial para o sucesso deste.
Obrigado
aonde encontro esse modulo VBA????
TEM UM TUDORIAL MAIS FACIL! TIPO PRA GENTE QUE NAUM INTENDI DE NADA????
Marcus, você pode acessá-lo pelo menu Ferramentas > Macro > Editor do Visual Basic, ou pelo atalho ALT+F11.
De qualquer maneira, pretendo publicar alguma coisa para os leitores que estejam iniciando ainda em programação.
Abraço.
Muito boa essa ajuda. Contudo se a celula por formatada condicionalmente esse aplicativo não funcional. Ex.: Formato a celula condicionalmente para amarelo se o valor for igual a 5. Coloco esse valor em na celula e ela muda de cor automatica pelo sistema. Só que essa formula nao reconhece a celular como amarelo. Apenas como branca. Mesmo ela estando amarela. Tem como resolver isso?
Alex, tem solução sim.
Escrevi uma matéria em resposta a sua questão.
Leia:
http://www.exceldoseujeito.com.br/2010/07/03/contar-celulas-coloridas-pela-formatacao-condicional/
Abraço.