Contar Células Coloridas

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.
Post-ContandoCelulasColoridasMini
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.

104 comentários em “Contar Células Coloridas”

  1. 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!

    Responder
  2. 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

    Responder
  3. 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

    Responder
  4. 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

    Responder
  5. 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

    Responder
    • 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

      Responder
      • 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?

        Responder
        • 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

          Responder
  6. 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.

    Responder
  7. Interessante, mas minha necessidade é a seguinte:
    Tenho as células pintadas, e dentro delas tenho valores.
    Exemplo: No intervalo A1:A10, tenho as células A3 (com valor 10), A5 (com valor 12), A6 (com valor 4) e A9 (com valor 7) pintadas de vermelho.
    Desejo obter a soma SOMENTE dessas células, ou seja, que a fórmula pegue as células pintadas de vermelho e me dê o valor da soma dos conteúdos dessas células coloridas, no caso, seria 34. Pode me ajudar?

    Responder
    • Fala cara!!
      Já havia respondido uma parada dessas aqui nos coments… você pode fazer assim:
      Substitua a linha
      ContaCelulaColorida = ContaCelulaColorida + 1
      Por
      ContaCelulaColorida = ContaCelulaColorida + rConta.Value
      Ok…
      Abração…

      Responder
  8. Reinaldo, parabéns pelo código (e pelo site). Esse código de atualização só funciona se a pessoa alterar algum valor no intervalo… não funciona se a pessoa simplesmente alterar a cor da célula.
    Acho que é essa a questão dos demais … e a minha também.
    De fato, usar o _selectionchange é o mais perto possível de se alterar essa fórmula aí, mas acho que precisaria de algo que force a mudança de algum valor no intervalo… ou antes da pessoa sair da planílha, ou de tempos em tempos (com algum temporizador), nao sei.
    Não achei ainda nenhum código para isso, talves você tenha e possa compartilhar. Caso tenha, me manda por e-mail?

    Responder
  9. entao… o que fiz pra solucionar isso foi simples… criei um botão de ação e nas ações do botao coloquei o tal calculate… segue o código
    Sub Botão2_Clique()
    ActiveSheet.Calculate
    End Sub

    Responder
  10. Valeu, funcionou perfeitamente. Agora só falta uma coisa: a soma dos valores está aparecendo arredondado. Quando as casas depois da vírgula são 75 centavos, arredonda para mais. Quando é 50 centavos, arredonda para menos. Quero que apareça o valor real. Já tentei “Definir precisão conforme exibido” nas propriedades avançadas do Excel, mas não funcionou…

    Responder
  11. Valeu Reinaldo.
    Deixei outra dúvida, mas não apareceu, vou refazer:
    A fórmula deu certinho (Substitua a linha
    ContaCelulaColorida = ContaCelulaColorida + 1
    Por
    ContaCelulaColorida = ContaCelulaColorida + rConta.Value), só que está arredondando os valores. Até cinquenta centavos, arredonda para menos; daí em diante arredonda para mais. Como é planilha de orçamento, não quero que arredonde. Como corrigir isso na própria fórmula? Já tentei “Definir precisão conforme exibido”, mas não funcionou…

    Responder
    • Oi… tenho estado com o tempo muito reduzido….. será que o dia não tem mais 24 horas??!!! rsrsrsrs
      Bem… sua solução é simples!
      A função carrega valores inteiros longos, sem precisão decimal, ok! (É do tipo Long).
      Você deve alterar para um tipo que suporte números decimais, tipo Double. Faça assim:
      Onde está:
      Function ContaCelulaColorida(rngColorInfo As Range, Intervalo As Range) As Long
      Substitua por:
      Function ContaCelulaColorida(rngColorInfo As Range, Intervalo As Range) As Double
      Vai ficar PERFEITO.
      Abração.

      Responder
  12. Olá, estou quebrando a cabeça para terminar um planilha com o resultado da lotofácil. Consegui que os acertos ficassem na cor verde (usando a formatação condicional). No entanto, usei a tua fórmula acima, baixei o exemplo e , depois de várias tentativas, não consegui lograr êxito. Será que é pelo fato dos dados em minha range se encontrarem na horizontal? Vc pode me ajudar ?
    Grato

    Responder
    • Oi Moisés. O problema não é o posicionamento das células não. A fórmula calcula qualquer intervalo de células.
      Mas, você não me disse qual o problema que está ocorrendo. Como você está informando o intervalo?
      Abraço.

      Responder
  13. ACHEI FANTÁSTICA A FUNÇÃO PARA CONTAR CÉLULAS POR CORES. MAS ESTOU ENCONTRANDO DIFICULDADE PARA CONTAR CÉLULAS LARANJAS DO INTERVALO C19:I24 QUE POSSUI DATAS ENTRE AS DATAS DAS CÉLULAS G19 E E22.
    OU SEJA, O INTERVALO C19:I24 CORRESPONDE AS DATAS DO MÊS DE OUTUBRO, EU QUERO CONTAR AS CÉLULAS LARANJAS ( RECESSOS) QUE TEM DATAS DEPOIS DE C19 ( 01/10/2010) E ANTERIORES OU IGUAIS E22 ( 20/10/2010) QUE REPRESENTA O TÉRMINO DO 3º BIMESTRE DA ESCOLA.
    OBRIGADO!
    RANGEL

    Responder
    • Rangel,
      Seria necessário fazer modificações nesta fórmula para que retornasse o resultado no intervalo que você precisa. A função teria que trabalhar por áreas. Enfim Quando eu tiver um tempinho disponibilizarei algo desse tipo. No momento, sem alterações na fórmula, você pode adaptar o seu uso para poder atender as suas necessidades. Faça assim:
      Execute a função por blocos.
      =ContaCelulaColorida (rngColorInfo, G19:I19) + ContaCelulaColorida (rngColorInfo, C20:I20) + ContaCelulaColorida (rngColorInfo, C22:E22)
      Espero ter ajudado.
      Abraços

      Responder
  14. 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!

    Responder
  15. 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

    Responder
    • 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

      Responder
  16. 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!

    Responder
    • 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.

      Responder
  17. 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

    Responder
  18. 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

    Responder
    • 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

      Responder
  19. 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

    Responder
    • 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.

      Responder
    • 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.

      Responder
  20. 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?

    Responder
  21. Incrível meu amigo! Já aprendi muito só de ver esta compilação.
    Agora lhe pergunto, como faço para a fórmula se atualizar automáticamente? No caso, quando coloro mais uma célula, a fórmula não calcula automáticamente, tenho de abrí-la e atualizá-la. Entendeu?

    Responder
  22. Gostaria de saber como funciona a formula no caso de trabalharmos com linhas mescladas. Usando o seu exemplo das frutas, vamos supor que as celulas A4:A5 estivessem mescladas e eu quisesse que a formula contasse apenas 1 morango neste caso. Eh possivel?
    Obrigado,
    Daniel

    Responder
    • Sim é possivel.
      Ficaria assim:
      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
      If rConta.EntireRow.Hidden = False Then
      ContaCelulaColorida = ContaCelulaColorida + 1
      End If
      End If
      Next
      End Function

      Acrescentei uma verificação para as linhas ocultas.
      Abç

      Responder
  23. Muito bom, perfeito, ajudou muito.
    Eu travei na fase em que desejo a contagem automática das células em branco, sem coloração. Mandei usar como referência uma célula sem preenchimento. Funciona bem demais.
    Poré, quando coloco coloração na célula vazia, a contagem não muda. Tenho que refazer o comando.
    Tentei a atualização automática no sheet da Plan 1 do MVB como postado acima (comando Sub) mas não funcionou. Será que estou fazendo tudo errado?
    Grato.

    Responder
  24. Prezado Reinaldo, que fantástica esta dica. Funcionou perfeitamente. Sou-lhe muito grata.
    Mas tive um probleminha, está função só funciona no meu computador. Eu fiz uma planilha no meu computador e coloquei-a em um diretório de rede, porém ela não funcionou em outro computador (ficou dando aquela mensagem de erro, sabe?). Esta opção não existe ou eu preciso acrescentar algo no código?
    Muito obrigada desde já!

    Responder
  25. Ola!!! adicionei o seguinte
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Calculate
    End Sub
    ele n atualiza quando é adicionada uma cor acredito eu q seja acredito q esta formula seja para o offce 1997-2003. Voce n teria algo para o excel 2007?

    Responder
    • Willian,
      Esta rotina é executada quando qualquer célula é selecionada, ou seja, somente quando uma célula for ativada, a macro será invocada.
      Como a seleção de células ocorre a todo instante, este é o melhor evento para chamar a macro.
      Desse modo, a planilha não será recalculada simplesmente ao pintar a célula.
      Abç
      —————————————————
      Siga-nos no twitter: @exceldoseujeito

      Responder
  26. Bom dia,
    A formula funciona perfeitamente utilizando números inteiros, porém meu intervalo de valores validos esta em 57,015 a 57,85, e ao usar números decimais a celula da formula apresenta:
    #VALOR!
    Aguardo ajuda…
    Muito boa a explicação de td…vlw…
    ABRACO

    Responder
  27. Definitivamente, não consigo encontrar o erro. Fiz tudo como orientado, mas minha fórmula retorna “NAME”.
    As células indicadas estão corretas, mas acho que o erro continua sendo no VB, pois nunca havia mexido nesse programa antes.
    Uma pergunta de leigo: eu copiei e colei o código que você descreveu. Devo manter os espaçamentos e números como aparecem na tela?
    01
    Function ContaCelulaColorida(rngColorInfo As Range, Intervalo As Range) As Long
    02
    Dim rConta As Range
    03
    04
    For Each rConta In Intervalo.Cells
    05
    If rConta.Interior.ColorIndex = rngColorInfo.Interior.ColorIndex Then
    06
    ContaCelulaColorida = ContaCelulaColorida + 1
    07
    End If
    08
    Next
    09
    10
    End Function
    No aguardo.

    Responder
  28. Olá,
    Agradeço muito pela dica.
    Estou utilizando o excel 2010 e está funcionando perfeitamente. O único problema é que excel 2010 não está funcionando o seguinte:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Calculate
    End Sub
    Alguma dica? pois quando mudo a cor e depois mudo de célula não recalcula.
    obrigado

    Responder
      • Reinaldo,
        Acho que o problema é que estou colocando essa parte do calculete errado… porque a contagem está funcionando, mas quando ponho a parte do calculate dá errado 🙁
        completo, ficaria assim?
        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
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        ActiveSheet.Calculate
        End Sub
        Ou tenho que por a última parte em outro módulo?
        Tô meio perdida, obrigada!!!

        Responder
  29. Olá tudo bem !
    Gostaria de somar a quantidade de OKs em uma planilha. E quando puser OK , gostaria que a linha se destacasse com uma cor.Tem como fazer isso no excel ?

    Responder
    • Olá Tabata.
      Não entendi bem o que você quer fazer, mas, para não contar essas cores, basta não chamar a função para elas. Pois, no exemplo que mostrei, a macro vai contar apenas as células coloridas para as cores informadas na função, ok.
      De qualquer forma, como não sei como você aplicaria isso na prática, abaixo segue os códigos para as cores pedidas:
      Sem Preenchimento: -4142
      Branca: 2
      O código da função poderia ser:

      
      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
                  Select Case rConta.Interior.ColorIndex
                      Case 2, -4142   'Branco, Sem preenchimento
                          'Não conta
                      Case Else
                          ContaCelulaColorida = ContaCelulaColorida + 1
                  End Select
              End If
          Next
      End Function
      

      Um abraço

      Responder
  30. criei a planilha com as celulas coloridas e o campo de contagem e funcionou, porem depois fui mudar a cor de uma celula e recebi uma mensagem de erro.
    “Erro de Nome Invalido”

    Responder
  31. Bom dia,
    Amigo como eu faço para somar os valores contidos nas células coloridas pois eu não quero só somar a quantidade de células e sim somar os valores de cada uma de acordo com a cor.
    Obrigado

    Responder
  32. Olá Reinaldo! Agradeço por compartilhar os seus conhecimentos!
    Usei a sua função e ela funcionou corretamente, mas infelizmente ela não atualiza automaticamente. Quando eu acrescento uma mais uma cor no intervalo(a mesma cor) a contagem fica atrasada. Preciso entrar na fórmula e dar enter para atualizar. Obrigado!

    Responder
  33. amigo estou querendo uma formula que conte as celulas com determinada cor, mas tambem que tenha certo nome, como por exemplo: portugues, matematica etc. tem como fazer isso?

    Responder
    • Hailton,
      Você poderia adaptar esta macro, colocando uma condicional para verificar o conteúdo das células. E não se esqueça de escrever na célula de referência para a contagem, o texto que deseja para cada cor.
      Modifique a linha 6 do código acima para:

      
      If ( (rConta.Interior.ColorIndex = rngColorInfo.Interior.ColorIndex) AND (rConta.value = rngColorInfo.value) ) Then
      

      Abç

      Responder
  34. Como seria a expressão para contar um intervalo de celulas que tem as cores alteradas condicionalmente por contagem de tempo? Exemplo: Se A1= 08:00:00 e B1=08:15:00 calculo em C1(B1-A1) obtendo o resultado de 00:15:00 que fica condicionalmente na cor verde. Como contar essas células por cores dentro do mesmo intervalo apesar da informação de horas dentro delas? Pois a formula acima não conta os intervalos por causa do conteúdo em forma de hora.

    Responder
  35. Muito boa a função q vc passou. Gostaria de saber se tem como fazer com que ela calcule automaticamente qdo eu mudar as cores. Ex. tenho 2 vermelhas e acrescento mais uma.

    Responder
  36. Olá! Eu vi que vc respondeu várias vezes sobre a atualização automática dos valores com o seguinte código:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Calculate
    End Sub
    No meu caso eu fiz ele na própria planilha mas ele ñ atualiza. O que posso estar fazendo errado. Obrigado pela atenção.

    Responder
    • Olá Roberto.
      Esse código é colocado no módulo da planilha mesmo. Não é no módulo global da função que mostramos no artigo não, ok!
      Não sei o que pode estar ocorrendo de errado aí, pois, aqui funciona legal. Sabe que funciona quando você clica em alguma célula ou muda o cursor para outra célula qualquer… Enfim, você muda a cor da célula e move o cursor para outra célula.
      Experimente, também, adicionar a linha:
      Application.Volatile
      na function ContaCelulColorida.
      Um abraço

      Responder

Deixe uma resposta para Mario Cancelar resposta