Texto para colunas no Excel - divide em colunas seletivamente

0

Estou tentando separar uma única célula em colunas, mas só preciso que os últimos 3 valores (separados por "espaço") estejam nas células separadas.

Eu tenho isso (em uma única coluna):

             Column A
Perdas com variações cambiais, líquidas 7 21.919.104 1.841,496
Perdas em ativos financeiros, líquidas 18 2.014.467 3.921.932
Perdas em empreendimentos conjuntos 30 2.185.679 3.011.998
Ganhos em empresas associadas, líquidos 33 (442.783.587) (210.273.584)

... e eu preciso ter 4 colunas (uma para o texto e as outras 3 para os valores numéricos:

             Column A                     Column B    Column C        Column D
Perdas com variações cambiais, líquidas       7      21.919.104           1.841,496
Perdas em ativos financeiros, líquidas       18       2.014.467       3.921.932
Perdas em empreendimentos conjuntos          30       2.185.679       3.011.998
Ganhos em empresas associadas, líquidos      33    (442.783.587)   (210.273.584)
    
por Mário Dias 02.03.2015 / 16:30

2 respostas

1

Aqui está uma solução com algumas fórmulas gigantes, mas não há colunas auxiliares para se preocupar. Supondo que seus dados estejam no intervalo A1:A4 , essas são as fórmulas para B1:F1 . Copie / cole e arraste-os para baixo.

Ponto-chave: Isso pressupõe que seus dados sigam o formato do exemplo. Se houver menos de 3 espaços nos dados brutos, isso causará um erro. Você especificou que este era o caso na questão, então eu não antecipo nenhum problema.

Ponto-chave: Isso pressupõe que um til ~ não apareça no seu texto. Em caso afirmativo, escolha outro caractere único que não. Um canal | é um exemplo comum.

B1 =LEN($A1)-LEN(SUBSTITUTE($A1," ",""))
C1 =TRIM(LEFT($A1,FIND("~",SUBSTITUTE($A1," ","~",$B1-2))))
D1 =LEFT(TRIM(RIGHT($A1,LEN($A1)-FIND("~",SUBSTITUTE($A1," ","~",$B1-2)))),FIND(" ",TRIM(RIGHT($A1,LEN($A1)-FIND("~",SUBSTITUTE($A1," ","~",$B1-2)))))-1)
E1 =LEFT(TRIM(RIGHT($A1,LEN($A1)-FIND("~",SUBSTITUTE($A1," ","~",$B1-1)))),FIND(" ",TRIM(RIGHT($A1,LEN($A1)-FIND("~",SUBSTITUTE($A1," ","~",$B1-1)))))-1)
F1 =TRIM(RIGHT($A1,LEN($A1)-FIND("~",SUBSTITUTE($A1," ","~",$B1))))
    
por 02.03.2015 / 20:27
0

Este é um método que requer várias "colunas auxiliares". Escolha uma coluna que esteja fora do caminho; por exemplo, AA ou Sheet2!A (Suponho que você tenha escolhido AA ) e insira isso

=IFERROR(FIND(" ", $A1), "")

na célula AA1 . Isso localiza a posição do caractere na célula A1 do primeiro caractere de espaço. Se não houver, FIND() retornará um erro e IFERROR() substitui o erro por uma string vazia. Em seguida, digite

=IFERROR(FIND(" ", $A1, AA1+1), "")

na célula AB1 . (Observe que o A tem um $ , mas o AA não.) Isso localiza a posição do caractere dentro da célula A1 do segundo caractere de espaço (isto é, o primeiro após o encontrado pela célula AA1 ). Novamente, códigos de erro são substituídos por células vazias. Arraste isto até a direita, conforme necessário. (Por exemplo, se você não espera ter mais de 24 palavras de texto real, então você terá no máximo 27 "palavras", contando os três números. Portanto, haverá um máximo de 26 espaços, então arrastando para AZ1 deve ser o suficiente.) Se você arrastar AB1 para AZ1 , então AZ1 deverá conter

=IFERROR(FIND(" ", $A1, AY1+1), "")

Então (supondo que você preencheu o intervalo AA1:AZ1 , acima), insira o seguinte em X1 , Y1 e Z1 :

  • X1 - =LARGE(AA1:AZ1,3)
  • Y1 - =LARGE(AA1:AZ1,2)
  • Z1 - =LARGE(AA1:AZ1,1)

Estes tornam-se os locais dos penúltimos, do penúltimo e últimos espaços em A1 . Por exemplo:


(A imagem acima é um link para uma cópia em tamanho real de si mesmo.)

em que destaquei manualmente os valores nas colunas AA - AZ que o Excel selecionou as colunas X , Y e Z .

Agora, é uma questão "simples" usar essas posições de caractere para cortar os valores (texto e numérico) que você deseja:

  • B1 - =LEFT($A1, X1-1)
  • C1 - =MID($A1, X1+1, Y1-X1-1)
  • D1 - =MID($A1, Y1+1, Z1-Y1-1)
  • E1 - =RIGHT($A1, LEN(A1)-Z1)

que equivale a

  • B1 - tudo (em A1 ) até (mas não incluindo) o penúltimo espaço
  • C1 - tudo entre o penúltimo espaço e o penúltimo espaço
  • D1 - tudo entre o penúltimo espaço e o último espaço
  • E1 - tudo depois do último espaço

E, claro, arraste tudo para baixo, até onde você tem dados. Por exemplo,

Se você tiver um espaço no final de uma linha de entrada (após o último número) ou vários espaços entre quaisquer dois números, isso irá quebrar. Se você entrar nessa situação, sugiro que você pesquise a função TRIM() .

    
por 02.03.2015 / 20:02