Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Extraindo números de uma célula, dois a dois...

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
renansobrenomes



Mensagens : 5
Data de inscrição : 17/07/2013

MensagemAssunto: Extraindo números de uma célula, dois a dois...   Qua Jul 17, 2013 8:21 pm

Boa tarde,

Apesar de ter aprendido o básico do basico de programação em vba, ja faz muito tempo que não trabalho com essa linguagem, portanto se puderem me ajudar, ficarei muito grato.
O que estou precisando fazer na minha tabela é basicamente: passar a informação numerica da célula A2 na ordem abaixo de horas, minutos e segundos para as células à direita. Na realidade gostaria de automatizar esta função pelo fato de que meu projeto com LabView gera pelo manos umas 10 dessas informações por dia e se eu fosse passar todos estes números manualmente, minha cabeça faria um nó.

..../........................A......................../.........B........./..........C.........../............D................
.1./.....................TEMPO..................../......Horas......./.....MINUTOS...../.......SEGUNDOS........
.2./...1HORA 42MINUTOS 36SEGUNDOS.../..........1........./.........42........../............36...............

Caso alguem saiba codificar isto para mim em VBA, ficaria muito grato.

Att,

Renan
Voltar ao Topo Ir em baixo
Ver perfil do usuário
renansobrenomes



Mensagens : 5
Data de inscrição : 17/07/2013

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Qua Jul 17, 2013 9:08 pm

renansobrenomes escreveu:
Boa tarde,

Apesar de ter aprendido o básico do basico de programação em vba, ja faz muito tempo que não trabalho com essa linguagem, portanto se puderem me ajudar, ficarei muito grato.
O que estou precisando fazer na minha tabela é basicamente: passar a informação numerica da célula A2 na ordem abaixo de horas, minutos e segundos para as células à direita. Na realidade gostaria de automatizar esta função pelo fato de que meu projeto com LabView gera pelo manos umas 10 dessas informações por dia e se eu fosse passar todos estes números manualmente, minha cabeça faria um nó.

..../........................A......................../.........B........./..........C.........../............D................
.1./.....................TEMPO..................../......Horas......./.....MINUTOS...../.......SEGUNDOS........
.2./...1HORA 42MINUTOS 36SEGUNDOS.../..........1........./.........42........../............36...............

Caso alguem saiba codificar isto para mim em VBA, ficaria muito grato.

Att,

Renan

Observação:

Esqueci de dizer que no campo das horas, não acontecerá de forma alguma a ocorrência de mais de um algarismo, portanto seria a extração de um algarismo para a célular B2, dois algarismos para a célula C2 e mais dois algarismos para a D2. Achei relevante comentar isso, pois tenho quase certeza que isso irá interferir no código do VBA.

Att,

Renan
Voltar ao Topo Ir em baixo
Ver perfil do usuário
renansobrenomes



Mensagens : 5
Data de inscrição : 17/07/2013

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Sex Jul 19, 2013 8:31 pm

Nenhuma boa alma??? kkkkkkkkk
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Dom Jul 21, 2013 1:10 am

Boa noite!!

Isso é para uma única célula?
Código:
Sub BaseadoEm_A1()
Dim c
With Cells(1).Offset(, 1)
    .Value = Cells(1).Value
    For Each c In [{"HORA","MINUTOS","SEGUNDOS"}]
        .Replace c, Chr(30)
    Next c
    .Replace " ", ""
    .Resize(, 3) = Split(.Cells, Chr(30))
    .Resize(, 3).Value = .Resize(, 3).Value
End With
End Sub

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
renansobrenomes



Mensagens : 5
Data de inscrição : 17/07/2013

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Qui Jul 25, 2013 5:36 pm

alexandrevba escreveu:
Boa noite!!

Isso é para uma única célula?
Código:
Sub BaseadoEm_A1()
Dim c
With Cells(1).Offset(, 1)
    .Value = Cells(1).Value
    For Each c In [{"HORA","MINUTOS","SEGUNDOS"}]
        .Replace c, Chr(30)
    Next c
    .Replace " ", ""
    .Resize(, 3) = Split(.Cells, Chr(30))
    .Resize(, 3).Value = .Resize(, 3).Value
End With
End Sub

Não, Alexandre. Serão várias células na coluna A, com as informações de horas, minutos e segundos.


Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
renansobrenomes



Mensagens : 5
Data de inscrição : 17/07/2013

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Qui Jul 25, 2013 9:34 pm

Consegui resolver o que estava querendo. Como o número de caracteres da célula que eu desejo extrair os números das horas, minutos e segundos são constantes, a formula EXT.TEXTO resolveu meu problema, mas de qualquer maneira agradeço o empenho do Alexandre em tentar resolver esta charada kkkk

Att,

Renan
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Patropi



Mensagens : 49
Data de inscrição : 14/06/2012
Localização : Campo Mourão - PR

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Qui Jul 25, 2013 11:16 pm

reman

Se vc não tivesse deixado explicito que queria a resposta em VBA, por fórmula eu já teria ajudado no primeiro dia.

Abs.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Sab Jul 27, 2013 4:38 am

Boa noite!!

Tente
Código:
Sub Teste()

Dim c As Range
Dim fc, lc As String
fc = "a330"
lc = "a336"
  With CreateObject("VBScript.RegExp")
        For Each c In ActiveSheet.Range(fc, lc)
          .Pattern = "([\d]+)HORAS* ([\d]+)MINUTOS* ([\d]+)SEGUNDOS*"
          Set myMatches = .Execute(c)
          If myMatches.Count > 0 Then c.Offset(0, 1) = Application.Trim(.Replace(c, "$1 $2 $3"))
        Next
    End With
    Application.DisplayAlerts = False
    Range(fc, lc).Offset(, 1).Select
    Selection.TextToColumns Destination:=Range(fc).Offset(, 1), DataType:=xlDelimited, _
    Tab:=False, semicolon:=False, comma:=False, Space:=True, other:=False
    Application.DisplayAlerts = True
End Sub
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Extraindo números de uma célula, dois a dois...   Hoje à(s) 8:54 am

Voltar ao Topo Ir em baixo
 
Extraindo números de uma célula, dois a dois...
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Dois jogos de NES que eu adoraria jogar de novo
» Fundir dois fóruns
» Usuário participar de dois grupos
» Colocar dois ranks
» Porque não posso criar dois fórum com o mesmo e-mail

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: