Página 1 de 1

Contar células com cor de fundo - formatação condicional

Enviado: 09 Mai 2017 às 16:39
por jules251
Boa tarde!

No meu estágio trabalho com planilhas que assumem cores de fundo diferentes conforme o valor resultante da célula.

Preciso contar quantas células há de cada cor, por exemplo quantas células cor de rosa, quantas verdes, quantas amarelas, etc.

Já encontrei fórmulas de VBA na internet para isso, mas nenhuma funcionou no meu caso por dois motivos:

- A cor de fundo da célula é resultante de uma formatação condicional; (depois de pesquisar achei uma fórmula que funciona nesse caso)

- O valor da célula é resultante de uma operação envolvendo outras células (ESSE é o meu problema, pois não acho fórmulas que funcionam neste caso; vi na internet outras pessoas com o mesmo problema e OU elas não encontraram solução OU a pessoa esclarecendo as duvidas resolveu o problema por e-mail, ou seja, não divulgou as fórmulas).

Não sei se consegui deixar claro, então explicando:

Os valores abaixo de 45 pintam a célula de verde
Os valores entre 45 e 90-beta pintam a célula de amarelo ==> aqui está o problema, para gerar esse resultado é feita uma subtração de uma célula com outra, que representa beta. Assim o programa não roda.
Os valores acima de 90-beta pintam a célula de vermelho ==> idem.

Ou seja, preciso de uma função de VBA que conte as cores das células e que funcione com células formatadas pela formatação condicional E cujo resultado seja derivado da operação com outras células.


Alguém consegue me ajudar? :?

Re: Contar células com cor de fundo - formatação condicional

Enviado: 09 Mai 2017 às 16:52
por FelipeMGarcia
Veja se esse anexo te ajuda.

Abs

Re: Contar células com cor de fundo - formatação condicional

Enviado: 09 Mai 2017 às 16:59
por osvaldomp
Experimente:
Código: Selecionar todos
Sub ContaPelaCor()
 Dim azul As Long, verde As Long, r As Range
  For Each r In Range("A1:A" & Cells(Rows.Count, 1).End(3).Row)
   If r.DisplayFormat.Interior.ColorIndex = 33 Then
    azul = azul + 1
   ElseIf r.DisplayFormat.Interior.ColorIndex = 43 Then
    verde = verde + 1
   End If
  Next r
 MsgBox "azul >> " & azul & vbLf & "verde >> " & verde
End Sub
para saber o número referente à cor da célula:
Código: Selecionar todos
Sub CorDePreenchimento()
     MsgBox ActiveCell.DisplayFormat.Interior.ColorIndex
End Sub
Se você não conseguir sugiro que você disponibilize uma amostra do seu arquivo, com alguns dados e com o resultado esperado.

obs. opcionalmente você pode contar as células utilizando critérios iguais aos utilizados na FC, em lugar de contar pela cor

Re: Contar células com cor de fundo - formatação condicional

Enviado: 12 Mai 2017 às 11:39
por jules251
Muito obrigada pelas respostas.

Tentei as duas sugestões e não deu certo, talvez porque ainda sou muito leiga e não compreendo o VBA completamente.

Segui a sugestão de upar um arquivo para que o meu problema seja mais fácil de visualizar (e tomara) resolver. Preciso contar a quantidade de células de cada cor (verde, vermelho e amarelo) nas duas últimas abas.

Desde agora fico muito agradecida pela ajuda ;)

Re: Contar células com cor de fundo - formatação condicional

Enviado: 12 Mai 2017 às 14:09
por osvaldomp
Considerando o intervalo 'F3:F12' da planilha "Alfa":

contar células verdes
Código: Selecionar todos
 =CONT.SE(F3:F12;"<45")
contar células amarelas
Código: Selecionar todos
=SOMARPRODUTO((F3:F12>=45)*(F3:F12<=E3:E12))
contar células cinza
Código: Selecionar todos
 =CONT.SE(F3:F12;"-")
contar células vermelhas
Código: Selecionar todos
 =SOMARPRODUTO(--(F3:F12>E3:E12)*(F3:F12<>"-"))

Re: Contar células com cor de fundo - formatação condicional

Enviado: 12 Mai 2017 às 14:49
por osvaldomp
Sugestão - no intervalo 'F3:F12' da planilha "Alfa" você aplicou 4 regras de Formatação Condicional em cada uma das 10 células daquele intervalo, o que resultou em 40 regras :o ; é possível aplicar as 4 regras para todo o intervalo, assim: selecione 'F3:F12' / Formatação Condicional / Limpar Regras das Células Selecionadas / Formatação Condicional / Nova Regra

para todas as regras clique em Usar uma fórmula para determinar ... e na caixa de fórmula cole as fórmulas conforme abaixo:
verde
=$F3<45

amarelo
=E($F3>=45;$F3<=$E3)

cinza
=$F3="-"

vermelho
=E($F3>$E3;$F3<>"-")

Contar células com cor de fundo - formatação condicional

Enviado: 15 Mai 2017 às 13:35
por jules251
Muito obrigada! Resolveu meu problema :D