Cómo extraer datos entre comillas de una cadena en Excel

Cómo extraer datos entre comillas de una cadena en Excel

Tengo marcas de tiempo en forma de archivo csv donde cada cadena se ve así:

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"
...

Mi objetivo es extraer la segunda, tercera y cuarta posición de esta cadena (sin las comillas dobles) en su propia columna:

  • 5009
  • 200001010000
  • -1,8

Logré lograr esto para la primera columna.

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

pero no tengo idea de cómo hacerlo para las otras 2 posiciones. ¿Se puede lograr eso sin VBA?

gracias de antemano

A

Respuesta1

Me gustaría sugerir dos métodos diferentes para extraer el enésimo texto de la cadena de texto en la celda.

Método 1:

ingrese la descripción de la imagen aquí

  • Fórmula en la celda J16:

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

NÓTESE BIEN

  • 2*255determina la posición del texto, en J13, 5009es la segunda palabra/texto.

  • Porque 20000101000la posición es la cuarta, ya que la fórmula cuenta ,antes como la tercera, por lo que para la fórmula en la celda J17reemplace 2*255con 4*255y con 6*255para -1.8la fórmula en J18.


Método 2:

Comprende una macro VBA y es una UDF (función definida por el usuario).

  • Presione cualquieraAlt+F11oRHaga clic derecho enShoja TAB y desde el menú emergente presioneVer códigopara obtener el editor VB.
  • Ccopiar yPAGGuarde 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

ingrese la descripción de la imagen aquí

  • Fórmula en la celda J3:=SUBSTITUTE(J1,CHAR(34),"")
  • Ingrese esta fórmula en la celda J5:=FindWord(J3,2)

NÓTESE BIEN

  • En esta fórmula 2se determina la segunda palabra/texto en la celda para que la siguiente sea =FindWord(J3,3)y así sucesivamente.

Puede usar CONCATENACIÓN si es necesario, todo en una celda.

información relacionada