Ir ao conteúdo
  • Cadastre-se
HickerX

Função Excel

Recommended Posts

Olá pessoal,

Estou tentando fazer com que o excel verifique se uma determinada célula possui uma determinada cor.

Exemplo, quero verificar se a célula H2 é verde. Se sim, a função deve retornar um True, se não, deve retornar um False.

Tentei utilizar a seguinte função em VBA:

Public Function PAGO_OK(cor As Integer) As Boolean

PAGO_OK = False

If celula.Interior.ColorIndex = cor Then

PAGO_OK = True

End If

End Function

Mas não funcionou.

O motivo de fazer isso é que estou fazendo um controle de pagamentos de modo que em uma planilha tenho duas colunas:

1° - Nome da pessoa;

2° - Status do pagamento

Logo, queria utilizar a função CONT.SE() de modo que essa função contaria apenas os nomes cujas células correspondentes ao [status do pagamento] estivessem coloridas de Verde (pagamento Ok), não contando as células na cor Vermelha (pagamento não realizado), tendo no final o número de pessoas que pagaram.

O que consigo fazer é contabilizar células nomeadas, ou seja, ao invés de colocar a cor verde, coloco um nome (Ex.: PAGO). Mas o controle por cor é bem mais intuitivo.

Alguém teria alguma ideia de como fazer isso?

Desde já obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro HickerX, Bom Dia.

Qual é o critério que você está utilizando para poder fazer "...cujas células correspondentes ao [status do pagamento] estivessem coloridas de Verde (pagamento Ok), não contando as células na cor Vermelha (pagamento não realizado),..." ?

É formatação condicional?

Envie o link da planilha.

Fica mais fácil para todos podererm analisar e ajudar.

Aguardo resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Caro HickerX, Bom Dia.

Qual é o critério que você está utilizando para poder fazer "...cujas células correspondentes ao [status do pagamento] estivessem coloridas de Verde (pagamento Ok), não contando as células na cor Vermelha (pagamento não realizado),..." ?

É formatação condicional?

Envie o link da planilha.

Fica mais fácil para todos podererm analisar e ajudar.

Aguardo resposta.

Obrigado Mazzaropi

Não usei formatação condicional, simplesmente queria colocar uma cor (manualmente) na frente do nome de quem já pagou.

Estou enviando o arquivo numa versão bem simplificada, pois a original contém muitas informações confidenciais e que não vem ao caso de minha dúvida.

Como você poderá notar, se coloco a seguinte linha na célula C7 da planilha Entrada: =CONT.SES(Inscrições!C2:C30;"Aluno Externo";Inscrições!D2:D30;"Pago"), a mesma funciona como esperado.

Mas se coloco a linha =CONT.SES(Inscrições!C2:C30;"Aluno Externo";Inscrições!D2:D30;PAGO_OK(38)) na célula C7 da planilha entrada, onde PAGO_OK(38) foi uma função definida por mim, não funciona.

Se você notar, o motivo de utilizar a função acima é simplesmente para que eu não tenha de colocar um valor na célula à frente dos nomes (como "Pago" e "Não Pago"), ficando as mesmas somente coloridas [pois já sei que o verde significa "Pago" e o vermelho "Não Pago"].

Link para planilha => aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isto:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Me.Calculate

End Sub

'Função para contar cor

Public Function SumColor(ByVal MyRange As Range, ByVal MyCel As Range) As Integer

Dim MyColor As String

MyColor = MyCel.Interior.Color

For Each MyCel In MyRange.Cells

If CLng(MyCel.Interior.Color) = MyColor Then

SumColor = SumColor + 1

End If

Next MyCel

End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro HicherX, Boa Tarde.

Sei que você está querendo algo que conte cores mas estou oferecendo uma sugestão diferente.

Se interessar está aquí.

Você disse que: "...Não usei formatação condicional, simplesmente queria colocar uma cor (manualmente) na frente do nome de quem já pagou...."

Pense Bem, se você vai ter o trabalho de colocar a cor manualmente, então pode digitar uma(1) letra: P de (Pago) ou N de (Não Pago).

Fiz algumas alterações na sua planilha.

Ela está no link: 02-08-2010--Planilha_Geral.xls

_________________________________________________________________

Segue abaixo a explicação do que fiz:

Aba Inscrições:

1) Criei um coluna chamada Status Teste na Coluna E e implantei Formatação Condicional.

......As regras implantadas são:

...........1) SE a célula = N então fica Laranja (pode escolher a cor que quiser)

...........2) SE a célula = P então fica Azul (pode escolher a cor que quiser)

Como fazer Formatação Condicional:

......Clique em E2

..........Depois --> Menu --> Formatar --> Formatação Condicional

Ao aparecer a caixa de diálogo faça:

Condição 1 : Primeiro campo = O valor da célula é

....................Segundo campo = igual a

....................Terceiro campo --> digite: ="P"

Botão: Formatar e escolha as cores que quiser.

Clique no Botão Adicionar

Condição 2 : Primeiro campo = O valor da célula é

....................Segundo campo = igual a

....................Terceiro campo --> digite: ="N"

Botão: Formatar e escolha as cores que quiser.

Assim que terminar as duas: OK

Se quiser pode deixar a cor do texto da mesma cor do fundo.

Aí somente aparecerá a cor escolhida, embora para pesquisa ainda exista o N ou o P.

Deve ficar como esta imagem abaixo:

dica2.gif

Selecione agora a célula E2 --> Copiar

Selecione todas as células que quiser aplicar a formatação condicional

Botão direito do Mouse --> Colar Especial --> Formatos

Pronto.

Experimente digitar P ou N e veja o que acontece.

Pode ser maiúsculo ou minúsculo, tanto faz.

Aba Entrada:

No campo dos N° Inscritos em C6 apliquei a fórmula:

=SOMARPRODUTO((Inscrições!$C$2:$C$31="Aluno UENF")*(Inscrições!$E$2:$E$31="P"))

Fiz a mesma coisa nas células abaixo sempre pesquisando pelo produto correto.

Qualquer dúvida estou à disposição.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Tente isto:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Me.Calculate

End Sub

'Função para contar cor

Public Function SumColor(ByVal MyRange As Range, ByVal MyCel As Range) As Integer

Dim MyColor As String

MyColor = MyCel.Interior.Color

For Each MyCel In MyRange.Cells

If CLng(MyCel.Interior.Color) = MyColor Then

SumColor = SumColor + 1

End If

Next MyCel

End Function

Márcio, na realidade o que quero é contar as células coloridas só que separadas por tipos, ou seja, alunos que pertençam ao grupo "Aluno Externo" e possuam a cor verde como Status serão contabilizados separadamente de alunos que pertençam ao grupo "Aluno Especial" e possuam a cor verde como Status.

-------------------------------------------------------------------------------------------------------

Mazzaropi,

gostei muito da sua ideia das cores na mesma cor da letra. Não era exatamente o que eu queria, mas o funcionamento vai ser idêntico.

Assim que chegar em casa, darei uma olhada.

Mesmo assim muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×