Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#22970
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? :?
#22973
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
Editado pela última vez por osvaldomp em 12 Mai 2017 às 13:45, em um total de 1 vez.
#23106
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 ;)
Você não está autorizado a ver ou baixar esse anexo.
#23111
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<>"-"))
#23112
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<>"-")
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord