none
Extrair Números RRS feed

  • Pergunta

  • Bom Dia,

    body_feminino_preto_ride_horse_2631_1_20181106112316.jpg

    Baseado no exemplo acima, preciso extrair os números em negrito (apenas para destacar, não esta assim na planilha) "2631". (sendo este variado, com mais ou menos dígitos) O texto que antecede aos números, também são variados com mais ou menos caracteres.

    Agradeço a todos que puderem ajudar!


    quarta-feira, 8 de maio de 2019 14:38

Todas as Respostas

  • Boa tarde,

    Se o texto for padrão, para o exemplo passado vc poderia usar a função EXT.TEXTO :

    Suponha que o texto esteja na célula A1, na célula B2 digite:

    EXT.TEXTO(A1;32;4)

    quarta-feira, 8 de maio de 2019 16:37
  • Obrigado por responder...
    Infelizmente o texto que antecede não é padrão...
    quarta-feira, 8 de maio de 2019 19:47
  • Boa noite!

    Qual o padrão para decidir quais caracteres extrair? É a primeira sequência numérica entre dois "_"?


    Filipe Magno

    sexta-feira, 10 de maio de 2019 22:35
  • Boa tarde Danilo. A solução até então, é utilizar o VBA.

    O código abaixo deve resolver sua questão:

    Sub extrair()
    Dim chave As Integer, linha As Integer 'Definindo as variaveis de controle chave para controlar quando acha a primeira cadeia de numeros e linha para navegar, caso haja mais de 1 linha a extrair
    Dim texto As String ' Variavel para receber os dados extraidos
    linha = 2 'Definindo a linha para 2, contando que a primeira linha seja cabeçalho
    chave = 0 'Chave inicia do 0 porque até aqui, nada foi extraído.
    
    Do Until Sheets(1).Cells(linha, 1) = "" 'Vai varrer a planilha, até encontrar uma célula vazia na coluna A
    
        For i = 1 To Len(Cells(linha, 1)) 'Vai verificar letra a letra contida na célula
            If IsNumeric(Mid(Cells(linha, 1), i, 1)) Then 'Se achar um número...
                texto = texto + Mid(Cells(linha, 1), i, 1) 'Adiciona na variavel texto, e vai concatenando até que encontre a próxima letra ou até que todos os caracteres sejam verificados
                chave = chave + 1
            Else
             If chave > 0 Then Exit For 'Se encontrar uma letra, depois de ter achado um número, aborta o FOR
            End If
        Next
    Cells(linha, 2) = texto 'Adiciona o texto extraido na linha correspondente na coluna 2
    chave = 0 'Zera a variavel chave para recomeçar a proxima linha
    texto = "" 'Reinicia a variavel texto
    linha = linha + 1 'Pula 1 linha
    Loop
    End Sub

    segunda-feira, 13 de maio de 2019 17:09
  • Boa tarde,

    Considerando que as quantidade de "_" sejam fixas, podemos fazer com um conjunto de funções:

    Ficou um pouco grande, porém, não é complexo, basta analisar cada uma das funções e você vai entender.

    Considerando que o código esteja na célula A5, fiz a fórmula na célula B5:

    =EXT.TEXTO(A4;LOCALIZAR("&";SUBSTITUIR(A4;"_";"&";5);1)+1;(LOCALIZAR("@";SUBSTITUIR(A4;"_";"@";6);1))-LOCALIZAR("&";SUBSTITUIR(A4;"_";"&";5);1)-1)

    1) substitui o 5 "_" por &

    2) substitui 0 6 "_" por @

    3) fiz a contagem de caracteres entre os 2 símbolos no item 1 e 2 

    4) usei o ext.texto para pegar a partir da posição após o & e a qtde. de letras, que é diferença entre os dois caracteres.

    Espero tenha ajudado, caso sim ou não, nos envie seu feedback,

    Tenho dicas de outras funções no canal: www.youtube.com/treinamentoscorp360

    Sucesso,

    Paulo Tácio

    quarta-feira, 29 de maio de 2019 17:25