Como extrair dados em cotações de uma string no Excel

Como extrair dados em cotações de uma string no Excel

Eu tenho carimbos de data e hora no formato de um arquivo csv onde cada string se parece com:

TT_TU_MN009,"5009","200001010000","-1.8","3","4"
TT_TU_MN009,"5009","200001010200","-1.7","10","1"
TT_TU_MN009,"5009","200001011400","1","10","1"
...

Meu objetivo é extrair a segunda, terceira e quarta posição desta string (sem as aspas duplas) em sua própria coluna:

  • 5009
  • 200001010000
  • -1,8

Consegui fazer isso na primeira coluna

=LEFT(A2;SEARCH(",";A2)-1)

mas não tenho ideia de como fazer isso nas outras 2 posições. Isso é possível sem o VBA?

Agradeço antecipadamente

A

Responder1

Eu gostaria de sugerir dois métodos diferentes para extrair o enésimo texto da string de texto na célula.

Método 1:

insira a descrição da imagem aqui

  • Fórmula na célula J16:

    =TRIM(MID(SUBSTITUTE("""" & $J$13& REPT(" ",6),"""",REPT(CHAR(32),255)),2*255,255))
    

Observação

  • 2*255determina a posição do texto, em J13, 5009é a 2ª palavra/texto.

  • Pois 20000101000a posição é a 4ª, pois a fórmula conta ,antes dela como a 3ª, portanto, para a fórmula na célula, J17substitua 2*255por 4*255e 6*255para -1.8a fórmula na J18.


Método 2:

É composto por macro VBA, é uma UDF (função User Define).

  • PressioneAlt+F11ouRcerto Clique noSheet TAB e do menu pop-up, cliqueVer códigopara obter o editor VB.
  • Copa ePaste este código como Módulo.

    Function FindWord(Source As String, Position As Integer)

    Dim arr() As String
    arr = VBA.Split(Source, ",")
    xCount = UBound(arr)
    If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
     FindWord = ""
     Else
     FindWord = arr(Position - 1)
    End If
    End Function

insira a descrição da imagem aqui

  • Fórmula na célula J3:=SUBSTITUTE(J1,CHAR(34),"")
  • Insira esta fórmula na célula J5:=FindWord(J3,2)

Observação

  • Nesta fórmula 2determina a 2ª palavra/texto na célula para que seja a próxima =FindWord(J3,3)e assim por diante.

Você pode usar CONCATENAÇÃO se precisar, tudo em uma célula.

informação relacionada