Usuário com melhor resposta
Planilhas no VBA

Pergunta
-
Tenho uma duvida.
Como eu faço para pegar os dados de uma planilha e desmembrar.
Por exemplo:
Tenho a plan4 que possui a seguinte listagem na coluna A:
M-C-240002 A/C
M-C 240001 A/B
Eu preciso criar uma macro, que desmembre esse A/C para: M-C-240002 A, M-C-240002 B e M-C-240002 C para cada linha da coluna B.
O mesmo para as linhas seguintes.
Ou seja, identifique que de A até C desmembra 3 vezes, de A até B desmembra 2 vezes e assim sucessivamente.
Não consigo achar uma função que desmembre...me ajude...
PLEASE!!
Respostas
-
Construindo o código sugerido pelo Luiz Cláudio:
Sub Desmembrar() With Sheets("Plan4") For i = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 Posição = InStr(.Cells(i, 2), "/") If Posição <> 0 Then CaractereInicial = Mid(.Cells(i, 2), Posição - 1, 1) CaractereFinal = Mid(.Cells(i, 2), Posição + 1, 1) CodAscInicial = Asc(CaractereInicial) CodAscFinal = Asc(CaractereFinal) TrechoInicial = Left(.Cells(i, 2), Posição - 2) .Cells(i, 2).ClearContents j = 0 For k = CodAscInicial To CodAscFinal If j > 0 Then .Cells(i + j, 2).Insert .Cells(i + j, 2) = TrechoInicial & Chr(k) j = j + 1 Next k End If Next i End With End Sub
[ ]s
Adilson Soledade - MOS- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 28 de outubro de 2012 01:29
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 14 de novembro de 2012 09:42
-
Função pronta não tem. Você precisa criar uma função no VBA para manipular o string e gerar os códigos.
Se eu fosse fazer, começaria usando a função InStr para localizar a posição da barra ("/").
Eu pegaria as letras que estão antes e depois das barras, usaria as função Asc() para ter o número da letra de início e o número da letra final e faria um loop por estes números, gerando um código para cada letra. Neste loop, eu usaria função Chr() para converter o número de volta em letra.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 28 de outubro de 2012 01:29
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 14 de novembro de 2012 09:42
Todas as Respostas
-
Função pronta não tem. Você precisa criar uma função no VBA para manipular o string e gerar os códigos.
Se eu fosse fazer, começaria usando a função InStr para localizar a posição da barra ("/").
Eu pegaria as letras que estão antes e depois das barras, usaria as função Asc() para ter o número da letra de início e o número da letra final e faria um loop por estes números, gerando um código para cada letra. Neste loop, eu usaria função Chr() para converter o número de volta em letra.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 28 de outubro de 2012 01:29
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 14 de novembro de 2012 09:42
-
Construindo o código sugerido pelo Luiz Cláudio:
Sub Desmembrar() With Sheets("Plan4") For i = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 Posição = InStr(.Cells(i, 2), "/") If Posição <> 0 Then CaractereInicial = Mid(.Cells(i, 2), Posição - 1, 1) CaractereFinal = Mid(.Cells(i, 2), Posição + 1, 1) CodAscInicial = Asc(CaractereInicial) CodAscFinal = Asc(CaractereFinal) TrechoInicial = Left(.Cells(i, 2), Posição - 2) .Cells(i, 2).ClearContents j = 0 For k = CodAscInicial To CodAscFinal If j > 0 Then .Cells(i + j, 2).Insert .Cells(i + j, 2) = TrechoInicial & Chr(k) j = j + 1 Next k End If Next i End With End Sub
[ ]s
Adilson Soledade - MOS- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 28 de outubro de 2012 01:29
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 14 de novembro de 2012 09:42