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.
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.
Um abraço a todos.







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!
Reply
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
Reply
exceldoseujeito Reply:
agosto 21st, 2009 at 20:31
Simples, Joyce, substitua a linha
ContaCelulaColorida = ContaCelulaColorida + 1
Por
ContaCelulaColorida = ContaCelulaColorida + rConta.Value
Abração…
Reply
Oi.
Ótima a fórmula, foi exatamente o que estava procurando.
Me ajudou e muito!
Obrigado.
Reply
exceldoseujeito Reply:
julho 30th, 2009 at 18:03
Disponha sempre.
Reply
Muito foda!
Valeu mesmo…isso que eu precisava!
Att.,
Bacana
Reply
Reinaldo Coral Reply:
setembro 4th, 2009 at 18:48
Obrigado.
Volte sempre
Reply
Putzzz…agora n esta dando mais certo!
Da como resultado “#NOME?” …Me dÊ uma Luz?
Att.,
Bacana
Reply
Reinaldo Coral Reply:
setembro 4th, 2009 at 18:51
Alguma referência de célula deve estar causando isso.
Reply
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
Reply
Reinaldo Coral Reply:
setembro 11th, 2009 at 12:06
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.
Reply
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
Reply
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
Reply
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
Reply
Reinaldo Coral Reply:
setembro 11th, 2009 at 12:01
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
Reply
Rodrigo Oliveira Reply:
junho 23rd, 2010 at 13:36
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?
Reply
Reinaldo Coral Reply:
junho 27th, 2010 at 11:31
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.
Reply
Reinaldo Coral Reply:
setembro 11th, 2009 at 12:57
Adicione no módulo da planilha que você está usando as células coloridas.
Vlw
Reply
Mario Reply:
dezembro 8th, 2009 at 13:07
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?
Reply
Reinaldo Coral Reply:
dezembro 31st, 2009 at 15:29
Sua solução pode ser encontrada aqui mesmo.
http://www.exceldoseujeito.com.br/2008/11/21/contar-celulas-coloridas/#comment-311
Abraços
Reply