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!
Olá.
Ótimo Artigo! Parabéns.
Gostaria de poder fazer algo mais: somar os valores das células colocaridas.
Como faço isso?
Atenciosamente,
Joyce Pardinho
Simples, Joyce, substitua a linha
ContaCelulaColorida = ContaCelulaColorida + 1
Por
ContaCelulaColorida = ContaCelulaColorida + rConta.Value
Abração…
Oi.
Ótima a fórmula, foi exatamente o que estava procurando.
Me ajudou e muito!
Obrigado.
Disponha sempre.
Muito foda!
Valeu mesmo…isso que eu precisava!
Att.,
Bacana
Obrigado.
Volte sempre
Putzzz…agora n esta dando mais certo!
Da como resultado “#NOME?” …Me dÊ uma Luz?
Att.,
Bacana
Alguma referência de célula deve estar causando isso.
Seguinte, quando faço referência em outra planilha tipo (A3;’ACOMPANHAMENTO SUP_FHD’!E5:E3970) ele não calcula, dá (#NOME?)…me ajude please!
Att.,
Bacana
Cara, alguma coisa tu está fazendo errado, porque dá certo sim.
Vai ver alguma informação de referência de célula não esteja batendo.
Veja bem amigo, estou batendo cabeça aqui…o que eu preciso é de uma fórmula para contar as cores das celulas ao mesmo tempo contar as informações contidas nela. Segue abaixo o exemplo.
Obs.: *O que esta entre parenteses é a cor da celula.
*Cada cor significa uma informação como mostra a (Tab.2).
*Quero saber se tem uma maneira de somar as cores com a referência nos municÃpios. Tipo somar quantos V.Velha (amarelo) possuem no intervalo da (Tab.1)
Tab.1 Tab.2
Municipio Legenda V.Velha Cariacica Serra Vitoria
V. Velha (amarelo) DCC (amarelo) 2 … … …
V. Velha (amarelo) FHD (vermelho) 1
V. Velha (cinza) PPP (roxo) 1
V. Velha (vermelho) Óbitos (verde) 2
Vitoria (roxo) Encerrado (azul) 2
V. Velha (roxo) Descartados (cinza) 1
Serra (amarelo)
Serra (cinza)
Cariacica (roxo)
Serra (amarelo)
Serra (roxo)
Vitoria (vermelho)
V. Velha (verde)
V. Velha (verde)
V. Velha (azul)
Serra (azul)
Vitoria (cinza)
V. Velha (azul)
* Se quiser mando a tabela em excel para melhor visualização.
Agradeço sua atenção!
Fico no aguardo
Att.,
Bacana
Vixe foi tudo desconfigurado…agora só mandando a tabela por e-mail…:(
Me manda um e-mail que respondo com a tabela em anexo!
Att.,
Bacana
Ola…desculpe pelos transtornos, desconsidere esses últimos, pois consegui resolver. Mas queria te pertubar mais uma vez, preciso que esta fórmula atualize automaticamente quando acrescento mais cores.
Att.,
Bacana
Olá.
Primeira coisa que deves fazer é extender o intervalo onde as cores serão adicionadas. No exemplo deste artigo, o intervalo descrito na fórmula é da coluna “A” da linha 2 até a 30. Modifique isto, para a totalidade onde serão pintadas as células.
Segunda coisa, adicione, na planilha em questão, a linha de comando abaixo:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)ActiveSheet.Calculate
End Sub
Prontinho.
Abraço
Boa tarde Reinaldo, meus parabéns pelo site e dicas, são realmente ótimas e muito úteis.
Quanto ao código acima implementei o mesmo porém quando atualizo a cor de uma das células somadas o cálculo não é feito automaticamente, ele só é feito se eu alterar a cor e também o valor da célula.
Como faço para assim que alterar a cor de uma célula o valor da mesma ser calculado no valor final?
Rodrigo,
Nos comentários postados para este artigo já apresentei soluções para casos como o seu.
Você deve fazer o seguinte.
Adicione, na planilha em questão, a linha de comando abaixo:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub
OK.
Abraço
Blz, esse comando eu add em outro módulo? ele vai fazer com que o cálculo se atualize automaticamente quando modificado a cor? Testei add em um outro módulo mas não atualizou.
Agradeço muito a sua atenção e por estar compartilhando o seu conhecimento, valeu mesmo. A funcionalidade da minha planilha está excelente, só falta mesmo atualizar.
Você é o cara! :)
Abrção.
Adicione no módulo da planilha que você está usando as células coloridas.
Vlw
Eu coloquei o codigo mas não actualiza a contagem das celulas coloridas sempre que preencho uma nova ou removo uma existente. O que estou a fazer de errado?
O código é inserido logo abaixo do end sub do primeiro codigo correcto?
Sua solução pode ser encontrada aqui mesmo.
http://www.exceldoseujeito.com.br/2008/11/21/contar-celulas-coloridas/#comment-311
Abraços