Ir ao conteúdo

Posts recomendados

Postado

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.

Postado

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

Postado

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.

Postado
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.

  • 6 anos depois...
Postado

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.

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!