Ir ao conteúdo

Macro para substituir valores


Wagao

Posts recomendados

Postado

Olá Amigos,

Preciso da ajuda de vocês, tenho um planilha em excel que contem registros de meus operadores, e alguns registros possuem numeros e outros caracteres ex:

A1234

ctx56446

#ctf6548

gostaria de criar uma macro que em determinado intervalo selecionado por mim a macro retirasse todos os caracteres e mantesse apenas numeros.

ex.:

regstros:

A1234

ctx56446

#ctf6548

apos selecionar os registros e rodar a macro

regstros:

1234

56446

6548

hoje eu faço da seguinte forma:

Sub Substituir()

'

' Substituir Macro

' Macro gravada em 24/02/2010 por 867337

'

' Atalho do teclado: Ctrl+w

'

Selection.Replace What:="a", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="b", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="c", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="d", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="e", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="f", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="g", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="h", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="i", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="j", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="k", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="l", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="m", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="n", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="o", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="p", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="q", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="r", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="s", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="t", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="u", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="v", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="x", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="z", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="y", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="w", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="#", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="_", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="*", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:="/", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

End Sub

porém esta macro fica muito extensa e não abrange todos os demais caracteres.

Desde já agradeço a colaboração

Postado

Bom dia!

Cara , faz o seguinte cole este código em um módulo:

Function sohnumero(texto As String) As String

Dim volta As String

Dim pedaco As String

volta = ""

For i = 1 To Len(texto)

pedaco = Mid(texto, i, 1)

If pedaco >= "0" And pedaco <= "9" Then volta = volta & pedaco

Next i

sohnumero = volta

End Function

Volte para sua planilha e digamos que os valores que você deseja extrair estejam na coluna (A) então na na célula (B1) Coloque está função:=sohnumero(A1) e arraste até onde você desejar e veja o que acontece!!

Postado
Bom dia!

Cara , faz o seguinte cole este código em um módulo:

Function sohnumero(texto As String) As String

Dim volta As String

Dim pedaco As String

volta = ""

For i = 1 To Len(texto)

pedaco = Mid(texto, i, 1)

If pedaco >= "0" And pedaco <= "9" Then volta = volta & pedaco

Next i

sohnumero = volta

End Function

Volte para sua planilha e digamos que os valores que você deseja extrair estejam na coluna (A) então na na célula (B1) Coloque está função:=sohnumero(A1) e arraste até onde você desejar e veja o que acontece!!

______

Marcelo valeu, mas o que eu preciso é de uma sub que substitua o "Ctrl+u", assim como eu fiz na minha macro só que uma forma mais simplificada e que retire tudo que é diferente de numeros da celula. Vou pegar sua função e tentar adaptar.

preciso de algo do tipo:

Sub Substituir_carac

Selection.Replace What: (diferente de Numero), Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

end sub

Se você tiver outra sugestão mais alguém puder me ajudar.

Postado

Boa noite,Wagao!

cara , olha só.. a Macro que eu te forneci faz "exatamente o que você precisa".. faça como eu lhe mostrei.. cole o código acima num modulo,e em seguida na sua planilha coloque a fórmula como lhe falei no primeiro post e "teste".. você não vai precisar acionar nenhum botão para puxar a macro e só ir digitando!! dúvidas poste tua planilha que eu adapto p/ você!!

Postado
Boa noite,Wagao!

cara , olha só.. a Macro que eu te forneci faz "exatamente o que você precisa".. faça como eu lhe mostrei.. cole o código acima num modulo,e em seguida na sua planilha coloque a fórmula como lhe falei no primeiro post e "teste".. você não vai precisar acionar nenhum botão para puxar a macro e só ir digitando!! dúvidas poste tua planilha que eu adapto p/ você!!

Bom dia Marcelo

Eu testei a função e funcionou mas vou lhe explicar a minha rotina.

Eu extraio uma base de dados de um programa que contem dados dos clientes, e o registros dos operadores que abriram solicitações para os clientes. porém os registros possuem numeros e letras, então eu seleciono toda a coluna que dos registros e ativo a macro que fiz, ela retira os demais caracteres e mantem apenas os numeros nas celulas, logo eu seleciono toda a planilha e colo em outra que contem formulas que preciso.

Ou seja cada dia vou usar a macro em uma planilha diferente, a macro servirá apenas para refinar minha base para joga-la na planilha de dados e formulas.

É isso. se eu pudesse enviaria a planilha mas é complicado a Segurança da informação tiraria meu coro.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!