Separe o conteúdo da célula após “-” para várias colunas de uma só vez

0
 -------------------------------------------- 
|  Visible |   Actual formula   |  I need    |
 --------------------------------------------
|    0     |   =500-500         |  500       |
|    0     |   =10000-10000     |  10000     |
|    0     |   =1500-1500       |  1500      |
|    0     |   =750-750         |  750       |
|          |                    |            |
 -------------------------------------------- 

Eu posso fazer a separação acima usando Text To Column da guia Data no MS Office Excel 2007. Mas eu tenho muitas colunas que não puderam selecionar e aplicar o texto à coluna de uma só vez. É possível de alguma outra maneira fácil?

    
por Rono Charlson 22.02.2014 / 08:07

1 resposta

0

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

  1. Iterar para trás em cada coluna
  2. Teste se a string do separador - está presente na coluna atual
  3. Se sim, insira uma nova coluna ao lado dela
  4. 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

Depoisde

Exemplo de planilha

    
por 22.02.2014 / 12:06