Extraia substrings de uma string separada por vírgula usando fórmulas no Excel

1

Eu tenho essa string na célula A1:

A1 some text, to be, processed

Eu quero criar fórmulas para B1, C1, D1, etc., onde:

B1 some text
C1 to be
D1 processed
E1 

Já encontrei o Texto para colunas recurso, mas eu preciso fazer isso usando fórmulas.

    
por Carlos Gutiérrez 27.02.2010 / 02:05

3 respostas

3

Você pode usar o VBA para criar uma função personalizada que possa ser usada como uma fórmula. Para fazer isso:

  1. Abra o Visual Basic (Alt + F11)
  2. Crie um novo módulo (módulo Insert &> >)
  3. Copie / cole o seguinte código:

Public Function custom_split(str As String, num As Long, Optional delimeter As String = " ") As String
    Dim substrs() As String
    substrs = split(str, delimeter)
    If UBound(substrs) < num Then
        custom_split = ""
    Else
        custom_split = Trim(substrs(num))
    End If
End Function

Agora feche a janela do Visual Basic para voltar ao Excel.

Para usar a fórmula, conforme o seu exemplo, digite

  • em B1: = custom_split (A1; 0; ",")
  • em C1: = custom_split (A1; 1; ",")
  • etc ...

Você pode alterar a vírgula para dividir por outros caracteres.

A única desvantagem das fórmulas personalizadas é que você receberá um aviso para ativar as macros sempre que abrir o arquivo.

    
por 27.02.2010 / 11:07
2

Eu fiz isso usando Left() e algumas colunas em uma planilha sobressalente que contava os caracteres até encontrar uma vírgula. Parecia um pouco assim:

    A                          B                C                D
1    Text                    1st Comma        2nd Comma        3rd comma
2 =(cell ref to text)&","   =find(",",a2,0)  =find(",",a2,b2) =find(",",a2,c2)

Referring to your original sheet:
B1: =Left(a1,NewSheet!B2)
C1: =Mid(A1, NewSheet!B2+1, NewSheet!C2-NewSheetB2)
D1: =Mid(A1, NewSheet!(C2+1 NewSheet!d2-Newsheet!c2)

Na sua NewSheet, faça quantas colunas você achar que podem ter vírgulas no seu texto. Se o número for grande, você provavelmente deve usar a solução VBA.

Note que coloquei uma vírgula no final da string para que você não receba erros (#value se não houver uma vírgula na string). Você pode testar um resultado maior que o tamanho da string original ou pode usar =iferror() para manipular as funções =find() não encontrando uma vírgula. Por fim, use =Trim() se as sequências não forem consistentes usando um espaço após uma vírgula.

    
por 12.04.2016 / 01:58
1

Você pode usar as funções de texto Left, Mid e Right. Left permite que você extraia vários caracteres do lado esquerdo da string de texto. Right faz a mesma coisa do lado direito da string de texto. Com Mid, você exclui um certo número de caracteres da esquerda e diz para ele tomar o próximo x número de caracteres.

Se você for para a caixa de diálogo "Inserir função" (clique no botão "fx" ao lado da barra de fórmulas), você encontrará essas funções na categoria "Texto".

    
por 27.02.2010 / 03:44