
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:
Fórmula na célula
J16
:=TRIM(MID(SUBSTITUTE("""" & $J$13& REPT(" ",6),"""",REPT(CHAR(32),255)),2*255,255))
Observação
2*255
determina a posição do texto, emJ13
,5009
é a 2ª palavra/texto.Pois
20000101000
a posição é a 4ª, pois a fórmula conta,
antes dela como a 3ª, portanto, para a fórmula na célula,J17
substitua2*255
por4*255
e6*255
para-1.8
a fórmula naJ18
.
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
- 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
2
determina 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.