Necesito obtener la hora del texto en una celda de Excel. El texto contiene el número del ticket, el título del ticket, el registro de tiempo y el porcentaje. Todos ellos están en una sola celda. Vea el ejemplo a continuación:
12345678: The bottom part is incorrect 0:15h 0%
Necesito conseguir el 0:15
. Intenté usar la combinación de funciones IZQUIERDA y DERECHA pero solo funcionará si el porcentaje de la última oración es de solo 1 dígito. El porcentaje varía del 0% al 100%. La longitud del título del billete también varía.
Respuesta1
yo uso gratiscomplemento de reemplazo reg-ex* que agrega funcionalidad de expresión regular a Excel, con eso puedes usar esta fórmula:
=RegExFind(A2,"\d{1,2}:\d{1,2}")
*
No estoy afiliado a ese complemento
Respuesta2
La respuesta de Máté Juhász es sin duda la más sencilla. Sin embargo, si no desea obtener el complemento y no está familiarizado con las expresiones regulares (y no quiere aprender), existe una forma más complicada de obtener el resultado utilizando funciones integradas. Se puede simplificar un poco si utiliza columnas auxiliares para evitar repeticiones. Lo usaré para explicar cómo funciona.
Todas las "palabras" están separadas por espacios. El título del billete puede tener distintos números de palabras. El último elemento, el porcentaje, está después del último espacio y el tiempo está después del penúltimo espacio. La columna B calcula el recuento de espacios con esta fórmula:
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
Esta fórmula funciona eliminando todos los espacios y luego calculando cuántos caracteres acortaron la cadena. En el ejemplo, hay 7 espacios.
La columna C quita el extremo de la cuerda comenzando con la hora. La fórmula es:
=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),B1-1))+1,LEN(A1))
Esto funciona sustituyendo un carácter de destino arbitrario que no aparece en los datos (CHAR(1) en este caso), por el espacio antes del tiempo (es decir, el penúltimo espacio), utilizando la función SUSTITUIR que le permite especificar un instancia específica a reemplazar. FIND luego localiza la posición de ese carácter y MID extrae el resto de la cadena comenzando en la siguiente posición.
El resultado de la Columna D extrae el tiempo con esta fórmula:
=LEFT(C1,FIND("h",C1)-1)
Funciona encontrando la "h" y extrayendo todo lo que viene antes.
Puede hacer esto en una única fórmula sin utilizar columnas auxiliares. Si reemplaza las referencias de las celdas auxiliares con las fórmulas de las celdas auxiliares, esa fórmula se vería así:
=LEFT(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1))+1,LEN(A1)),FIND("h",MID(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1))+1,LEN(A1)))-1)
Tenga en cuenta que todo esto supone datos limpios y sin espacios finales. Si los espacios finales son una posibilidad, ajuste todas las referencias a A1 con TRIM() o recorte A1 en una columna auxiliar y consúltela para evitar repeticiones.
Respuesta3
Pruebe la siguiente fórmula:
=TRIM(RIGHT(TRIM(LEFT(SUBSTITUTE(TRIM(E10);"h ";REPT(" ";99));99));5))