Então você deseja aplicar esse método a várias colunas de uma vez, certo?
Eu não vejo como isso poderia ser feito sem o VBA, então aqui está a minha solução:
Sub text2columns()
separator = "-"
FirstCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlNext).Column
LastCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
For i = LastCol To FirstCol Step -1
Set test = ActiveSheet.Columns(i).Find(separator, , xlFormulas, xlPart)
If Not test Is Nothing Then
Set FirstCell = ActiveSheet.Columns(i).Find("*", , , , , xlNext)
Set LastCell = ActiveSheet.Columns(i).Find("*", , , , , xlPrevious)
Columns(i + 1).Insert Shift:=xlToRight
Application.DisplayAlerts = False
Range(FirstCell, LastCell).TextToColumns Destination:=FirstCell, _
DataType:=xlDelimited, Other:=True, OtherChar:=separator
Application.DisplayAlerts = True
End If
Next
End Sub
Visão geral rápida
- Iterar para trás em cada coluna
- Teste se a string do separador
-
está presente na coluna atual - Se sim, insira uma nova coluna ao lado dela
- E aplicar método de texto a coluna à coluna atual
Esta macro irá falhar se você tiver mais de um separador em qualquer célula
Antes