Ir para conteúdo
Fórum Script Brasil
  • 0

Macro para eliminar texto e deixar numeros


Guest Pedro Patrocínio

Pergunta

Guest Pedro Patrocínio

Olá,

Preciso de ajuda para uma macro que faça o seguinte:

Numa planilha que contem texto e números: "abcd912345678/asdas" preciso que coloque numa coluna ao lado na mesma linha, apenas: 912345678

O que é importante é que apenas sejam colocados numa lista paralela, todos os números que fiquem a seguir ao 9, inclusive.

Pode acontecer existir ou não, um espaço entre o texto e o numero 9. Por exemplo: "abc912345678" ou "abc 912345678"

Se o número não tiver 9 dígitos ou não começar por 9, então a macro não o deve considerar.

O objectivo é ficar apenas com planilhas que contenham números começados por 9 e com 9 dígitos.

Deve ainda, caso existam 2 números na mesma planilha, seleccionar os dois numeros e colocar o 2º numero numa outra coluna, na mesma linha:

por exemp: asdas 912345678/965432107asdas e ficar numa planilha 912345678 e em outra, na mesma coluna " 965432107"

No resultado final deve ser apresentado uma coluna ou duas, contendo apenas os números começados por 9.

Todas as planilhas têm texto e numeros começados por 9 e com 9 digitos.

Fica aqui um desafio para os mais inteligentes desta área.

Agradeço desde já vossa ajuda e espero não estar a pedir nada impossível ;)

1ab

Pedro Patrocinio

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Guest Pedro Patrocínio

Sim o nº 9 pode-se repetir apenas após o 3 digito. Existem 4 tipos de números começados pode 9: são eles: 91xxxxxxx; 96xxxxxxx; 92xxxxxxx; e 93xxxxxxx.

x>=0 e <=9

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Como ninguém consegui me ajudar, recorri a outro forum www.mrexcel.com/forum/ e na hora eles me deram a solução.

Deixo aqui o codigo para quem quiser:

Sub GetNums()
Dim RegEx As Object, RegMatchCollection As Object
Dim c As Object
Dim Rng As Range
Dim I As Long

    Set RegEx = CreateObject("vbscript.regexp")
    Set Rng = Range("A1")
    
    While Rng.Value <> ""
  
        With RegEx
            .Global = True
            .Pattern = "\d+"
        End With
    
        Set RegMatchCollection = RegEx.Execute(Rng.Value)
        
        For Each c In RegMatchCollection
            If Left(c, 1) = 9 Then
                I = I + 1
                Rng.Offset(, I) = c
            End If
        Next c
        
        I = 0
        Set Rng = Rng.Offset(1)
        
    Wend
    
End Sub

Fiquem bem.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...