Ir ao conteúdo
  • Cadastre-se

Excel-mudar valor de acordo com a cor da célula


Posts recomendados

Olá,

Alguém poderia me ajudar?:confused:

Eu gostaria de usar alguma fórmula para, caso uma célula seja de determinada cor, o valor de outra célula possa ser atualizado.

Todos os tópicos que vi com esse tema eram sobre formatação condicional, o que é diferente do que procuro. Na formatação condicional você atualiza a cor (formatação) da célula de acordo com o valor dela; o que eu quero é o inverso: atualizar um valor dependendo da cor. Por exemplo:

A1=4;

B1=se(A1=azul;A1;A1/2);

Assim, o valor de B1 seria 4 se a célula A1 estivesse formatada na cor azul e seria 2 se estivesse em qualquer outra cor.

Alguém sabe fazer isso?

Desde já agradeço!

Ps: uso o excel 2010 e ainda não criei uma planilha; apenas pretendo criar, se essa fórmula for possível.

Link para o comentário
Compartilhar em outros sites

Uma solução é utilizar uma UDF. Porém, há uma limitação quanto à atualização automática do valor retornado pela função, já que o Excel não interpreta a mudança de cor da célula como um evento capaz de disparar uma macro ou uma UDF.

Assim, por ex., se a célula 'A1' estiver com preenchimento azul e alojando o número '20', a célula 'B1', que contém a função (UDF), estará exibindo '20'. Se for alterada a cor de 'A1' a função continuará exibindo '20' até que a planilha seja recalculada e então a função passará a exibir '10'.

A planilha será recalculada, e em consequência o valor retornado pela função será atualizado, após ser alterado o conteúdo de alguma célula, se a planilha estiver setada para calculo automático, ou ao apertar F9.

Pode tb ser recalculada via macro, disparada ao mudar a célula selecionada.

Se quiser testar a UDF, instale o código abaixo em um módulo comum, assim:

1. copie o código daqui

2. a partir da planilha de interesse tecle Alt+F11 para acessar o editor de VBA

3. no editor, menu Inserir >> Módulo

4. cole o código na janela em branco que vai se abrir

5. feito! Alt+Q para retornar para a planilha

6. em qualquer célula vazia, com exceção da coluna 'A', coloque a função =CorAzul()

Funcionamento - a função olha sempre para o conteúdo e a cor de preenchimento da célula à sua esquerda. Ex: a função em 'B1' monitora 'A1', se a função estiver em 'G10', irá monitorar 'F10'. Ela pode ser inserida em uma célula, depois copiada para outras por arraste ou por copiar/colar.

Function CorAzul()
Dim cor As Long
Application.Volatile
cor = Application.Caller.Offset(, -1).Interior.ColorIndex
If cor = 37 Then
CorAzul = Application.Caller.Offset(, -1).Value
Else: CorAzul = Application.Caller.Offset(, -1).Value / 2
End If
End Function

Se quiser 'forçar' a planilha a recalcular ao mudar a célula selecionada, além dos passos acima, instale o código abaixo no módulo da mesma planilha de interesse, assim:

7. copie o código daqui

8. clique com o direito na guia da planilha e escolha 'Exibir código'

9. cole o código na janela em branco que vai se abrir

10. feito! Alt+Q para retornar para a planilha e testar

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Calculate
End Sub

obs. utilizei a cor azul = 37. Sugiro que você pinte uma célula com a cor de sua escolha e em seguida rode o código abaixo para saber seu número e alterar no primeiro código acima se for diferente de 37.

Instale o código abaixo no mesmo módulo do primeiro código, depois pinte a célula, mantenha-a selecionada aperte Alt+F8 e execute o código MinhaCor

Sub MinhaCor()
Dim cor As Long
cor = ActiveCell.Interior.ColorIndex
MsgBox cor
End Sub

Link para o comentário
Compartilhar em outros sites

osvaldomp, muito obrigado pela resposta!

A sua solução foi quase perfeita.

O que acontece é que eu planejo usar a formatação condicional para alterar a cor das células de acordo com outras informações da planilha. Assim, o valor da célula estaria constante, porém a cor iria variar conforme atualizo a planilha com valores em outros campos.

Além disso, vi que seu código vincula a célula da coluna anterior à que contém a fórmula. O que eu quero é executar uma soma dos valores da linha. Por exemplo, quero que a célula C5 seja a soma dos valores de A1 a T1, condicionando à cor, se azul, soma o número da célula, se for de outra cor, soma metade. Algo do tipo:

variáveis
soma: variável numérica
x: variável numérica que controla o loop
nf: número da última coluna da soma
valor_da_célula: recebe o valor da célula que está sendo analisada

enquanto n<=nf faça
se célula=azul então
x=valor_da_célula
else
x=(valor_da_célula)/2
end se
soma=soma+x
n=n+1

end enquanto

Assim a célula que contém a fórmula dessa soma condicionada à cor deveria atualizar sempre que mudasse a cor de alguma das células.

O que eu busco é uma fórmula da seguinte forma:

=somase.Cor(criterio_de_cor;vetor)

"criterio_de_cor": seria o número da cor que vai condicionar a fórmula

"vetor": seria a sequencia de células que seriam avaliadas

"somase.Cor": seria a fórmula que volta a soma dos números contidos no vetor. Se a célula estiver preenchida pela cor especificada no critero_de_cor, ele soma valor da célula integral, se não estiver na cor do criterio, então soma apenas metade.

A atualização do valor da célula que contém a fórmula deveria ser feita toda vez que alguma das células do vetor tivesse sua cor alterada.

Desculpe por não ter dito a ideia da soma anteriormente, mas é que eu pensei que daria conta de fazer, pelo menos a soma, sozinho. Mas você vinculou seu código à célula anterior; daí eu me perdi completamente... :wacko:

Desculpe o amadorismo...

Se puderem me ajudar eu agradeceria muito.

Link para o comentário
Compartilhar em outros sites

Assim a célula que contém a fórmula dessa soma condicionada à cor deveria atualizar sempre que mudasse a cor de alguma das células.

...

A atualização do valor da célula que contém a fórmula deveria ser feita toda vez que alguma das células do vetor tivesse sua cor alterada.

Leia o meu post acima sobre isso. Talvez algum colega aqui do fórum consiga te ajudar pois eu desconheço solução para essa sua necessidade.

Link para o comentário
Compartilhar em outros sites

  • 6 anos depois...

Minha dúvida é parecida com o caso citado... no meu caso quando a cor da célula dentro de uma tabela l9:bg258 fica vermelha padrão (devido a uma formatação condicional), gostaria que nas células que ficassem em vermelho padrão (excel 2016) fosse adicionado o valor "N" na célula.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!