Neste artigo, você vai aprender como contar células por cor no Excel e obter a soma das células coloridas. Essas soluções funcionam tanto para células coloridas manualmente quanto com formatação condicional. Você também vai ver como filtrar células por várias cores no Excel 2010, 2013, 2016 e 2019.
Se você costuma usar várias cores de preenchimento e fonte para diferenciar vários tipos de células ou valores, eu aposto que é de seu interesse aprender contar quantas células são realçadas com uma determinada cor na planilha. Se os valores das células forem números, é possivel calcular automaticamente a soma das células sombreadas com a mesma cor.
Talvez você já saiba que o Microsoft Excel fornece uma variedade de fórmulas para diferentes propósitos, e seria lógico supor que existam algumas para contar células por cor. Mas, é uma pena que ainda não exista uma fórmula que nos permita somar ou contar por cores em uma planilha Excel comum.
Como contar e somar por cor no Excel
Suponha que a gente tenha uma tabela listando os pedidos de sua empresa onde as células na coluna Entrega são coloridas com base em seu valor – as células “Vence em X dias” são laranja, os itens “Entregues” são verdes e os pedidos “Vencidos” são vermelhos.
O que queremos agora é contar automaticamente as células por cor, ou seja, calcular o número de células vermelhas, verdes e laranja na planilha. Como expliquei, não existe uma solução direta para essa tarefa. Mas, para nossa alegria, podemos desenvolver isso no VBA. Então, prossiga com as 5 etapas rápidas abaixo e você saberá o número e a soma de seus células coloridas em poucos minutos.
- Abra sua pasta de trabalho do Excel e pressione Alt + F11 para abrir o Editor do Visual Basic.
- Clique com o botão direito do mouse no nome da pasta de trabalho em “EstaPastaDeTrabalho” na parte direita da tela e escolha Inserir > Módulo no menu de contexto.
3. Adicione o seguinte código na planilha:
Function PegarCorDaCelula(xlRange As Range) Dim indLinha, indColuna As Long Dim arResults() Application.Volatile If xlRange Is Nothing Then Set xlRange = Application.ThisCell End If If xlRange.Count > 1 Then ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count) For indRow = 1 To xlRange.Rows.Count For indColuna = 1 To xlRange.Columns.Count arResults(indLinha, indColuna) = xlRange(indLinha, indColuna).Interior.Color Next Next PegarCorDaCelula = arResults Else PegarCorDaCelula = xlRange.Interior.Color End If End Function Function PegarCorDaFonte(xlRange As Range) Dim indLinha, indColuna As Long Dim arResults() Application.Volatile If xlRange Is Nothing Then Set xlRange = Application.ThisCell End If If xlRange.Count > 1 Then ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count) For indLinha = 1 To xlRange.Rows.Count For indColuna = 1 To xlRange.Columns.Count arResults(indLinha, indColuna) = xlRange(indLinha, indColuna).Font.Color Next Next PegarCorDaFonte = arResults Else PegarCorDaFonte = xlRange.Font.Color End If End Function Function ContarCelulaPorCor(rData As Range, CorCelulaRfe As Range) As Long Dim indRefCor As Long Dim cellAtual As Range Dim cntRes As Long Application.Volatile cntRes = 0 indRefCor = CorCelulaRfe.Cells(1, 1).Interior.Color For Each cellAtual In rData If indRefCor = cellAtual.Interior.Color Then cntRes = cntRes + 1 End If Next cellAtual ContarCelulaPorCor = cntRes End Function Function SomarCelulaPorCor(rData As Range, cellRefCor As Range) Dim indRefCor As Long Dim cellAtual As Range Dim sumRes Application.Volatile sumRes = 0 indRefCor = cellRefCor.Cells(1, 1).Interior.Color For Each cellAtual In rData If indRefCor = cellAtual.Interior.Color Then sumRes = WorksheetFunction.Sum(cellAtual, sumRes) End If Next cellAtual SomarCelulaPorCor = sumRes End Function Function ContarCelulaCorFonte(rData As Range, cellRefCor As Range) As Long Dim indRefCor As Long Dim cellAtual As Range Dim cntRes As Long Application.Volatile cntRes = 0 indRefCor = cellRefCor.Cells(1, 1).Font.Color For Each cellAtual In rData If indRefCor = cellAtual.Font.Color Then cntRes = cntRes + 1 End If Next cellAtual ContarCelulaCorFonte = cntRes End Function Function SomarCelulaCorFonte(rData As Range, cellRefCor As Range) Dim indRefCor As Long Dim cellAtual As Range Dim sumRes Application.Volatile sumRes = 0 indRefCor = cellRefCor.Cells(1, 1).Font.Color For Each cellAtual In rData If indRefCor = cellAtual.Font.Color Then sumRes = WorksheetFunction.Sum(cellAtual, sumRes) End If Next cellAtual SomarCelulaCorFonte = sumRes End Function
4. Salve sua pasta de trabalho como “Pasta de trabalho habilitada para macro do Excel (.xlsm)”.
5. Escolha a célula onde deseja enviar os resultados e insira a função que acabamos de criar: ContarCelulaPorCor
= ContarCelulaPorCor (intervalo; código de cor)
Neste exemplo, usamos a fórmula = ContarCelulaPorCor ($F$2: $F$14, A17) onde $F$2: $F$14 é o intervalo contendo células codificadas por cores que se deseja contar e A17 é a célula com uma determinada cor de fundo, vermelha no nosso caso .
De forma semelhante, escrevemos a fórmula para as outras cores que desejamos contar, laranja e verde no caso.
Se tiver dados numéricos em células coloridas (por exemplo, a coluna Quatidade no nosso exemplo), podemos adicionar os valores com base em uma determinada cor usando a função análoga: SomarCelulaPorCor
= SomarCelulaPorCor (intervalo; código de cor)
Conforme demonstrado acima, usamos a fórmula = SomarCelulaPorCor ($D$2:$D$14; A17) onde $D$2:$D$14 é o intervalo e A17 é a célula com um padrão de cor.
De maneira semelhante, podemos contar células e somar os valores das células pela cor da fonte usando as funções ContarCelulaCorFonte e SomarCelulaCorFonte:
Nota: Se depois de aplicar o código VBA apresentado acima você precisar colorir mais algumas células manualmente, a soma e a contagem das células coloridas não serão recalculadas automaticamente para refletir as alterações.
Como contar e somar células por cor em toda pasta de trabalho
O código VBA abaixo conta e soma as células de uma determinada cor em todas as planilhas da pasta de trabalho:
Function ContarCelulaPorCorNaPlanilha(cellRefCor As Range) Dim vWbkRes Dim PlanilhaAtual As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual vWbkRes = 0 For Each PlanilhaAtual In Worksheets PlanilhaAtual.Activate vWbkRes = vWbkRes + ContarCelulaPorCorNaPlanilha(PlanilhaAtual.UsedRange, cellRefCor) Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic ContarCelulaPorCorNaPlanilha = vWbkRes End Function Function SomarCelulaPorCorNaPlanilha(cellRefCor As Range) Dim vWbkRes Dim PlanilhaAtual As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual vWbkRes = 0 For Each wshCurrent In Worksheets PlanilhaAtual.Activate vWbkRes = vWbkRes + SomarCelulaPorCorNaPlanilha(PlanilhaAtual.UsedRange, cellRefCor) Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic SomarCelulaPorCorNaPlanilha = vWbkRes End Function
Use essa macro da mesma maneira que usou a anterior e produza a contagem e a soma das células coloridas com a ajuda das seguintes fórmulas, = ContarCelulaPorCorNaPlanilha () e = SomarCelulaPorCorNaPlanilha (). Basta inserir qualquer uma das fórmulas em qualquer célula vazia de qualquer planilha sem definir um intervalo, especificar o endereço de qualquer célula da cor necessária entre colchetes, por exemplo, = SomarCelulaPorCorNaPlanilha (A1), e a fórmula exibirá a soma de todas as células sombreadas com a mesma cor na pasta de trabalho.
Funções personalizadas para obter a cor de fundo de uma célula, cor da fonte e código de cor
Aqui você vai encontrar um resumo de todas as funções que usamos neste exemplo, e outras novas que recuperam códigos de cores.
Observação: lembre-se de que todas essas fórmulas funcionam apenas se você tiver adicionado a função definida pelo usuário à pasta de trabalho do Excel, conforme demonstrado anteriormente neste artigo.
Funções para contar por cor:
- ContarCelulaPorCor (intervalo; código de cor): conta as células com a cor de fundo especificada. No exemplo acima, usamos a seguinte fórmula para contar células por cor = ContarCelulaPorCor ($F$2:$F$14, A17) onde $F$2:$F$14 é o intervalo selecionado e A17 é a célula com a cor de fundo necessária. Você pode usar todas as outras fórmulas listadas abaixo de maneira semelhante.
- ContarCelulaCorFonte (intervalo; código de cor) : conta as células com uma cor de fonte específica.
Fórmulas para somar por cor:
- SomarCelulaPorCor (intervalo; código de cor): calcula a soma das células com uma determinada cor de fundo.
- SomarCelulaCorFonte (intervalo; código de cor): calcula a soma das célulascom uma cor de fonte específica.
Fórmulas para obter o código de cores:
- PegarCorDaFonte (cell): retorna o código de cor da cor da fonte de uma célula específica.
- PegarCorDaCelula (cell): retorna o código de cor da cor de fundo de uma célula específica.
Conclusão
Neste artigo vimos como criar funções no Excel, usando VBA, para contar e somar células coloridas, ou com formatação diferenciada.
Caso tenha interesse em aprender mais VBA, nesse link aqui eu escreve sobre o tema.
O site deste pessoal aqui foi referência para este artigo. O site é muitoooo bacana com várias dicas legais para Excel, mas infelizmente o conteúdo está em inglês, o que não deixa de ser uma boa referência para quem conseguir acompanhar. Eu recomendo.
Eu sei que não é comum ler um artigo deste, como tutorial, e repetir para aprender, mas recomendo fortemente que você tome coragem de repetir todo o passo-a-passo. Eu penso que praticar é a melhor maneira de aprender e, embora pareça simples, é preciso se acostumar a navegar entre as telas e fórmulas do Excel para que no futuro você possa se tornar um usuário avançado.
Portanto, continue lendo mais sobre Dicas de Excel aqui.
Um comentário sobre “Como Contar e Somar Células por Cor de Fundo no Excel”