/ / Split Cell por números dentro da célula - excel, vba, split, cells

Dividir Célula por Números Dentro da Célula - excel, vba, split, cells

Eu tenho alguns campos que precisam ser divididos em células diferentes. Eles estão no seguinte formato:

Números na Missão 21 0 21

Números na Missão 5 1 6

A saída desejada seria 4 células separadas. A primeira conteria as palavras na string "Numbers on Mission" e as células subsequentes teriam cada número, que é determinado por um espaço. Portanto, para o primeiro exemplo, os números a serem extraídos seriam 21, 0, 21. Cada um estaria em sua própria célula ao lado do valor da string. E pelo segundo: 5, 1, 6.

Eu tentei usar uma função split, mas não tinha certeza de como direcionar os números especificamente e identificar os números com base nos espaços que os separavam.

Respostas:

1 para resposta № 1

Pertinente ao seu primeiro caso (Numbers on Mission), a solução simples poderia ser a seguinte:

Sub SplitCells()
Const RowHeader As String = "Numbers on Mission"
Dim ArrNum As Variant
ArrNum = Split(Replace(Range("A1"), RowHeader, ""), " ")
For i = 1 To UBound(ArrNum)
Cells(1, i + 2) = ArrNum(i)
Next
Cells(1, 2) = RowHeader
End Sub

A mesma lógica é aplicável ao seu segundo caso. Espero que isso possa ajudar.


0 para resposta № 2

A menos que eu esteja negligenciando algo, você pode nãoprecisa de VBA em tudo. Você já tentou a opção "Text to Columns"? Se você selecionar a (s) célula (s) com as informações que gostaria de dividir, vá para Dados -> Texto para Colunas. Lá, você pode escolher "delimitado" e escolher um espaço como um delimitador, que dividirá seus dados em várias células, dividido por onde o espaço está.

editar: Só percebi que também vai dividir sua string. Nesse caso, quando você estiver na 3ª parte do Text to Columns, escolha uma célula de destaination que não seja a célula com seus dados (ou seja, se seus dados estiverem em A1, escolha B1 como destino, e ele colocará a dividir informações lá.Apenas basta combinar as colunas de texto com algo parecido =B1&" "&C1&" "&D1)


0 para resposta № 3

Consegui dividir corretamente os valores usando o seguinte:

 If i.Value Like "*on Mission*" Then

x = Split(i, " ")

For y = 0 To UBound(x)

i.Offset(0, y + 1).Value = x(y)

Next y

End If