Ir ao conteúdo
  • Cadastre-se

Separando o conteudo de uma célula em várias


Ir à solução Resolvido por ragirardi,

Posts recomendados

Pessoal,

 

Tenho as infomações como estão abaixo, dentro de uma mesma coluna e na mesma célula.

 

[38343 - 1 - Guarda roupa modulado Multiuso 2 Portas 529 Felicce Branco - Carraro]
[38335 - 1 - Guarda roupa modulado Closet 1 Porta Felicce Branco - Carraro]
[38311 - 1 - Guarda Roupa 4 Portas Felicce Branco - Carraro]
[38327 - 2 - Criado mudo Felicce Branco - Carraro]
[38319 - 1 - Cômoda 4 Gavetas Felicce Branco - Carraro]
[38399 - 1 - Cabeceira de Casal Extensível 1019 Felicce Branco - Carraro]

 

Preciso separar em colunas diferentes apenas o primeiro e o segundo número.

 

Ex: 38343 -1-

 

Alguém sabe como se faz isso?

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

Desculpa pessoal, me expressei de forma incorreta.

 

Na verdade o conteúdo se encontra em uma única célula. Isso é que dificulta tudo.

 

Preciso extrair para células diferentes os dois primeiros números sem os tracinhos de toda a sequencia contida na célula

 

É do jeito como vocês fizeram, mas precisa extrair todos os números que estão na célula.

 

 

Anexei o arquivo completo para melhor entendimento

 

Muito obrigado pela ajuda pessoal.

 

Abs.

Dúvida.xlsx

Link para o comentário
Compartilhar em outros sites

ragirardi,

com a coluna "A" com quebra de linha e c/ varios dados em cada celula, é possivel fazer c/ formulas.

Mas acredito q c/ macro, seria a melhor solucao.:

Crie um modulo e cole o codigo abaxio: 

 

Sub Extrair_Codigos()
Dim Ws As Worksheet
On Error Resume Next
i = 1
For i = i To 81
x = 0
Wr = Len(Range("a" & i)) - Len(Application.WorksheetFunction.Substitute(Range("a" & i), Chr(10), ""))
Do While x <= Wr
With Sheets("plan1")
.Range("b" & i) = .Range("b" & i) & Chr(10) & Mid(Split(Cells(i, 1), Chr(10))(x), 2, 5)
.Range("c" & i) = .Range("c" & i) & Chr(10) & Mid(Split(Cells(i, 1), Chr(10))(x), 10, 1)
x = x + 1
End With
Loop
Next
End Sub

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

ragirardi, mesmo ja tendo um solucao,

veja tbem esta opcao q separa os codigos em linhas unicas (na coluna "A" e extrai os codigos para as colunas "C" e "D" )

abx. 

 

Sub Extrair_Codigos_2()
    Dim Wr As Long
    Dim i, j As Long
    Dim ct As String: ct = 0
    'On Error Resume Next
    i = 1
    j = 1
    For i = i To 81
        x = 0
        Wr = Len(Range("a" & i)) - Len(Application.WorksheetFunction.Substitute(Range("a" & i), Chr(10), ""))
        Do While x <= Wr
            With Sheets("plan1")

                .Range("b" & j) = Split(Cells(i, 1), Chr(10))(x)
                Select Case InStr(Cells(j, 2), "-")
                Case Is = 7
                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 5, 4)
                Case Is = 8
                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 6, 5)
                Case Is = 9
                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 7, 6)
                End Select
                .Range("d" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") + 2, 2)
                ct = ct + 1
                x = x + 1
                j = j + 1
            End With
        Loop
    Next
    MsgBox "Foram extraidos " & ct & " códigos da coluna [ A ] ", 0, "Sucesso "
End Sub

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

Outra solução seria separar estes dados via importação de arquivo texto (isso se o problema já não começou por aí).

Salvando os dados da célula em um arquivo texto você poderia importar separando por tamanho de coluna e as linhas seriam automáticamente ajustadas.

Nao atende 100%, pois os dados nao tem o padrão delimitado ou largura fixa. 

O conteudo é formado por codigos de 4, 5 e 6 digitos. (4632, 75138, 102007)

E ainda alguns casos com o codigo verif.neste padrão:  62884 - 23 -

Com o codigo vba é possivel 'dribrar' esas situações. 

Link para o comentário
Compartilhar em outros sites

Nao atende 100%, pois os dados nao tem o padrão delimitado ou largura fixa. 

O conteudo é formado por codigos de 4, 5 e 6 digitos. (4632, 75138, 102007)

E ainda alguns casos com o codigo verif.neste padrão:  62884 - 23 -

Com o codigo vba é possivel 'dribrar' esas situações. 

Mas eu penso q consegui superar estas limitações Basole sem usar macro.

Reimportei o texto e separei o código utilizando funções.

Reimportando texto.xlsx

Link para o comentário
Compartilhar em outros sites

 

via importação de arquivo texto..

...importar separando por tamanho de coluna e as linhas seriam automáticamente ajustadas.

Bom DJunqueira, hahaha voce havia sugerido usar o recurso do excel importacao de arquivo texto, e agora voce usa funcoes. Me parace que mudou de ideia.

Bom a questao nao é usar macro (vba) ou nao:  

Só pra informar, eu e o Patropi ja haviamos apresentado solucoes c/ funcoes para situacao normal de celulas com dados unicos

As  macros que apresentei foi em funcao da formataco apresentada na coluna "A" que contem na mesma células varos dados e quebra de linha, se os dados ja extivesem 'mastigados' como voce o fez no seu arq. anexo, sem duvida nao precisaria de macros isso seria uma maravilha! hehehee.

Outra coisa nao existe nenhum arquivo texto postado neste tópico.

Link para o comentário
Compartilhar em outros sites

Bom DJunqueira, hahaha voce havia sugerido usar o recurso do excel importacao de arquivo texto, e agora voce usa funcoes. Me parace que mudou de ideia.

Bom a questao nao é usar macro (vba) ou nao:  

Só pra informar, eu e o Patropi ja haviamos apresentado solucoes c/ funcoes para situacao normal de celulas com dados unicos

As  macros que apresentei foi em funcao da formataco apresentada na coluna "A" que contem na mesma células varos dados e quebra de linha, se os dados ja extivesem 'mastigados' como voce o fez no seu arq. anexo, sem duvida nao precisaria de macros isso seria uma maravilha! hehehee.

Outra coisa nao existe nenhum arquivo texto postado neste tópico.

Sim é verdade Basole, isso foi com base na primeira mensagem depois é q vi a planilha, mas mesmo assim ainda copiei o texto da planilha fornecida e salvei em um arquivo texto p/ posterior importação. Portanto não mudei de ideia, apenas me adaptei a uma demanda maior...

 

Eu penso q muitas vezes é necessário imaginar qual é o problema geral q a pessoa quer resolver antes de oferecer a solução específica, pois muitos dos q recorrem ao fórum não tem ideia da melhor forma de enfrentar um problema. E p/ nós uma das melhores coisas é a troca de ideias através da confrontação de soluções diferentes. Aprendo muito com vocês, espero estar contribuindo de alguma forma tb ;) .

 

Grande abraço.

Link para o comentário
Compartilhar em outros sites

ragirardi, mesmo ja tendo um solucao,

veja tbem esta opcao q separa os codigos em linhas unicas (na coluna "A" e extrai os codigos para as colunas "C" e "D" )

abx. 

 

Sub Extrair_Codigos_2()

    Dim Wr As Long

    Dim i, j As Long

    Dim ct As String: ct = 0

    'On Error Resume Next

    i = 1

    j = 1

    For i = i To 81

        x = 0

        Wr = Len(Range("a" & i)) - Len(Application.WorksheetFunction.Substitute(Range("a" & i), Chr(10), ""))

        Do While x <= Wr

            With Sheets("plan1")

                .Range("b" & j) = Split(Cells(i, 1), Chr(10))(x)

                Select Case InStr(Cells(j, 2), "-")

                Case Is = 7

                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 5, 4)

                Case Is = 8

                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 6, 5)

                Case Is = 9

                    .Range("c" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") - 7, 6)

                End Select

                .Range("d" & j) = Mid(Cells(j, 2), InStr(Cells(j, 2), "-") + 2, 2)

                ct = ct + 1

                x = x + 1

                j = j + 1

            End With

        Loop

    Next

    MsgBox "Foram extraidos " & ct & " códigos da coluna [ A ] ", 0, "Sucesso "

End Sub

Funcionou perfeitamente Basole.

 

Muito obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...