Página 1 de 1

Copiar a formatação da célula referenciada

Enviado: 30 Mai 2016 às 15:38
por Felipetvr
Boa tarde,

Tenho uma planilha que é alimentada diariamente com dados que retiro de outro portal onde trabalho.
Esses valores são destacados por cor para atenção, mas vêm no formato de texto "1.0" e não número "1,0", logo não consigo criar a formatação condicional usando "maior >" ou "menor<".
Uso 2 tabelas demonstrando "ANTES" e "DEPOIS". Em outra aba eu referencio essas duas tabelas em uma única, porém ao ser referenciadas, não carrega a formatação das cores. Há algum comando para realizar?

Re: Copiar a formatação da célula referenciada

Enviado: 01 Jun 2016 às 13:33
por MichelExcel
Olá Felipe,

uma forma de resolver seu problema é criar uma formatação condicional do tipo 'Fórmula'. Então na fórmula você usa a função SUBSTITUIR para trocar o "." por "," e efetuar a comparação desejada.

Att.
#MichelExcel

Copiar a formatação da célula referenciada

Enviado: 01 Jun 2016 às 14:37
por Parkeless
Felipe,

Acho que entendi seu problema. Existem células pintadas que contém número (com ponto ao invés de vírgula), e ainda com texto dentro dela, por exemplo: "43.9 dBmV".

Talvez dê para fazer com fórmula (com substituir pra mim deu erro, talvez tenha feito algo errado), mas achei mais simples fazer com função personalizada...
Código: Selecionar todos
Function RetornarNum(Valor As String) As Double

Dim ArrayString
Dim Resultado

ArrayString = Split(Valor, " ")

Dim i As Long
On Error Resume Next
'Se tiver espaços, separar a string e achar valor

If UBound(ArrayString) <> 0 Then

    For i = 0 To UBound(ArrayString) - 1
        Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1
        If IsNumeric(Resultado) Then
            RetornarNum = Resultado
            Exit Function
        End If
    
    Next i

Else
'Se não, só trocar o ponto por vírgula
    Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1
    RetornarNum = Resultado
End If


End Function
Essa fórmula faz uma busca na string e retorna o primeiro valor encontrado, trocando o ponto pela vírgula. Assim "43.9 dBmV" retorna 43,90.

A partir daí, ela lhe permite fazer formatação condicional tranquilamente com esses números-string.

Estou anexando um exemplo da aplicação, já com alguns critérios hipotéticos. Se tiver dificuldade em adaptar para o seu caso, me informe quais são os critérios reais que aplico e envio.

Copiar a formatação da célula referenciada

Enviado: 01 Jun 2016 às 18:59
por Felipetvr
Acredito que o script se adeque melhor no que preciso. Mas não sei inserir ele na planilha, vou anexar ela aqui. Se possível gostaria de entender o que aconteceu. As outras vezes que me ajudou consegui compreender o que foi feito.

Copiar a formatação da célula referenciada

Enviado: 03 Jun 2016 às 10:17
por Parkeless
Felipe,

Desculpe a demora.

Para incluir uma função personalizada, você tem que ir na planilha, teclar Alt + F11, ir em Inserir > Módulo, e colar o código.

Depois, a planilha deve ser salva no formato .xlsm (planilha habilitada para macro).

Segue código comentado e aplicação anexa:
Código: Selecionar todos
Function RetornarNum(Valor As String) As Double

Dim ArrayString
Dim Resultado

ArrayString = Split(Valor, " ") 'A função split  separa um texto em vários subtextos, utilizando um critério (como se fosse um texto para colunas). Determino como critério " ", ou seja, um "espaço" em branco.


Dim i As Long
On Error Resume Next
'Se tiver espaços, separar a string e achar valor

If UBound(ArrayString) <> 0 Then 'Se tiver algum espaço no texto, então

    For i = 0 To UBound(ArrayString) - 1 'Fazer para todos os subtextos até achar o número
        Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1 'Pegar esse subtexto, trocar vírgula por ponto, e multiplicar por 1
        If IsNumeric(Resultado) Then 'Se o resultado disso der um número, então
            RetornarNum = Resultado 'Fórmula retorna esse número e finaliza
            Exit Function
        End If
   
    Next i 'Se o resultado não deu um número, ir para o próximo subtexto

Else 'Se não tiver nenhum espaço,

    Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1 ' só trocar o ponto por vírgula
    RetornarNum = Resultado 'E a fórmula retorna esse número e finaliza
End If



End Function

Re: Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 04:26
por DJunqueira
Uma forma alternativa de resolver seu problema sem utilizar macro ou função (hehe, mas é isso aí, sem nenhuma das duas) é fazendo uma nova consulta em DADOS / NOVA CONSULTA onde vc pode importar e tratar seus dados de onde e como vc quiser antes deles serem colocados na planilha.

No caso da sua planilha eu importei os dados dela mesma e coloquei uma nova tabela em S:Z, substituí todos os pontos por vírgula nas colunas SNR; TX; RX; MER e transformei os números destas colunas de texto p/ número, para isso nas colunas TX e RX eu retirei o texto "dBmV" e o recoloquei virtualmente pela formatação personalizada. Com isso destaquei os números negativos em vermelho.

Agora p/ 'importar' e tratar os seus dados basta apertar o botão atualizar.

A ferramenta do Excel q faz isso tudo é mais conhecida em inglês como POWER QUERY e tem diversos vídeos s/ ela na internet. Vale muito a pena conhecer mais s/ ela, automatiza muita coisa de forma simples, prática e de fácil manutenção.

Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 04:33
por DJunqueira
Esqueci de acrescentar q tb pode ordenar e excluir dados, linhas e colunas.

Re: Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 11:52
por Felipetvr
Parkeless escreveu:Felipe,

Desculpe a demora.

Para incluir uma função personalizada, você tem que ir na planilha, teclar Alt + F11, ir em Inserir > Módulo, e colar o código.

Depois, a planilha deve ser salva no formato .xlsm (planilha habilitada para macro).

Segue código comentado e aplicação anexa:
Código: Selecionar todos
Function RetornarNum(Valor As String) As Double

Dim ArrayString
Dim Resultado

ArrayString = Split(Valor, " ") 'A função split  separa um texto em vários subtextos, utilizando um critério (como se fosse um texto para colunas). Determino como critério " ", ou seja, um "espaço" em branco.


Dim i As Long
On Error Resume Next
'Se tiver espaços, separar a string e achar valor

If UBound(ArrayString) <> 0 Then 'Se tiver algum espaço no texto, então

    For i = 0 To UBound(ArrayString) - 1 'Fazer para todos os subtextos até achar o número
        Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1 'Pegar esse subtexto, trocar vírgula por ponto, e multiplicar por 1
        If IsNumeric(Resultado) Then 'Se o resultado disso der um número, então
            RetornarNum = Resultado 'Fórmula retorna esse número e finaliza
            Exit Function
        End If
   
    Next i 'Se o resultado não deu um número, ir para o próximo subtexto

Else 'Se não tiver nenhum espaço,

    Resultado = Application.WorksheetFunction.Substitute(ArrayString(i), ".", ",") * 1 ' só trocar o ponto por vírgula
    RetornarNum = Resultado 'E a fórmula retorna esse número e finaliza
End If



End Function
Consegui ajustar, funcionou perfeitamente. Só não consegui ajustar 1 condição na formatação condicional.
1ª formatação condicional: =RetornarNum($I5)<40 , Letras em Laranja;
2ª formatação condicional: =RetornarNum($I5)>50 , Letras em Vermelho;
A terceira é condição é ser entre 40 e 50 (letra verde), mas como tenho que chamar a função RetornarNum(), não consegui colocar esses dois critérios juntos.

Re: Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 12:11
por Felipetvr
DJunqueira escreveu:Uma forma alternativa de resolver seu problema sem utilizar macro ou função (hehe, mas é isso aí, sem nenhuma das duas) é fazendo uma nova consulta em DADOS / NOVA CONSULTA onde vc pode importar e tratar seus dados de onde e como vc quiser antes deles serem colocados na planilha.

No caso da sua planilha eu importei os dados dela mesma e coloquei uma nova tabela em S:Z, substituí todos os pontos por vírgula nas colunas SNR; TX; RX; MER e transformei os números destas colunas de texto p/ número, para isso nas colunas TX e RX eu retirei o texto "dBmV" e o recoloquei virtualmente pela formatação personalizada. Com isso destaquei os números negativos em vermelho.

Agora p/ 'importar' e tratar os seus dados basta apertar o botão atualizar.

A ferramenta do Excel q faz isso tudo é mais conhecida em inglês como POWER QUERY e tem diversos vídeos s/ ela na internet. Vale muito a pena conhecer mais s/ ela, automatiza muita coisa de forma simples, prática e de fácil manutenção.
Companheiro, gostei muito da ferramenta, mas não consegui usar. Olhei seu exemplo, mas não encontrei nem a formatação condicional.
É uma ferramenta extremamente útil, já que extraio os dados de outro local.
Poderia dar uma ajuda?

Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 13:19
por Parkeless
"A terceira é condição é ser entre 40 e 50 (letra verde), mas como tenho que chamar a função RetornarNum(), não consegui colocar esses dois critérios juntos. "

Seria algo assim (obs.: não testei):
=e(retornarnum($I5)>=40;retornarnum($I5)<=50)
Mas acredito que só de você deixar pintado as células (sem ser formatação condicional) já dê certo.

Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 16:00
por Felipetvr
Verdade Robson,

"só de você deixar pintado as células (sem ser formatação condicional) já dê certo."

Independente da 3ª formatação condicional funcionar, já resolveu deixando tudo pintado.

Mais uma vez Obrigado pela ajuda!

Re: Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 18:24
por DJunqueira
Companheiro, gostei muito da ferramenta, mas não consegui usar. Olhei seu exemplo, mas não encontrei nem a formatação condicional.
É uma ferramenta extremamente útil, já que extraio os dados de outro local.
Poderia dar uma ajuda?
Sim, posso ajudar. É uma ferramenta nova q veio com o Excel 2016 e o pessoal ainda não está usando muito, mas cai como uma luva p/ o seu caso.

Quanto a formatação, ela não é uma formatação condicional na realidade utilizei formatação de número mesmo, aquela q vc clica com o botão direito do mouse na célula e depois escolhe Formatar células...

Imagem

Na planilha q eu enviei eu não ordenei nem fiz nenhuma formatação condicional.

É provável q vc esteja tendo problema por conta do diretório deferente no seu computador p/ planilha.

Imagem

Copiar a formatação da célula referenciada

Enviado: 06 Jun 2016 às 21:23
por Felipetvr
"É uma ferramenta nova q veio com o Excel 2016"

Numa versão anterior eu só consigo exibir. Não tenho esse recurso?

Copiar a formatação da célula referenciada

Enviado: 07 Jun 2016 às 00:30
por DJunqueira
Infelizmente é isso mesmo, só na versão 2016 p/ usar todo o potencial da ferramenta.

Re: Copiar a formatação da célula referenciada

Enviado: 07 Jun 2016 às 00:54
por Kledison
Boa noite,

no Excel 2013 também é possível usar o Power Query:

Imagem

Se quiser baixá-lo entre nesse tópico, lá tem um link.

http://gurudoexcel.com/forum/viewtopic. ... uery#p6582

Att

Copiar a formatação da célula referenciada

Enviado: 07 Jun 2016 às 01:07
por DJunqueira
Muito bem Kledison, vejo q vc conseguiu redirecionar o link. :)

Copiar a formatação da célula referenciada

Enviado: 07 Jun 2016 às 11:58
por Felipetvr
Consegui instalar no Excel 2010. Funcionou!

Muito obrigado DJunqueira e Kledison