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

Utilize essa sessão para criar tópicos relacionados a tabelas dinâmicas, formatações condicionais, subtotais, filtros, etc
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
#11149
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?
#11270
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
#11278
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.
#11301
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.
#11361
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
#11406
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.
#11412
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.
#11413
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?
#11419
"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.
#11431
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!
#11444
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
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