
Tengo algunas celdas en mi hoja de cálculo que tienen varias fechas separadas por un punto y coma ;
.
Después de buscar en Google, descubrí que TEXTSPLIT
probablemente sea la mejor fórmula para dividir esto, pero produce varias columnas de datos. Espero comparar los valores dentro de la celda antes de que se separen y devuelvan un valor que sea el mayor del grupo.
es posible? Una cosa en la que acabo de pensar es en tener una máquina un poco complicada que divide los valores en una hoja separada y otra fórmula que toma el valor máximo de esas filas. Me gustaría evitar el uso de varias hojas si puedo.
Respuesta1
Si he entendido correctamente, entonces la siguiente fórmula debería funcionar:
- Fórmula utilizada en la celda.B1
=MAX(--TEXTSPLIT(A1,"; "))
O usar BYROW()
para obtener toda la salida una vez, ¡sin completarla!
=BYROW(A1:A3,LAMBDA(α, MAX(--TEXTSPLIT(α,"; "))))
Con los datos de muestra existentes, la fórmula anterior también funciona y aquí hay una demostración de muestra.
Explicaciones:
- Uso de
TEXTSPLIT()
la función: ayuda a dividir las cadenas por el delimitadorsemi-colon with a space
-->;
en columnas. (Consulte lo.gif
que se muestra).
Dado que es una función que se incluye en la biblioteca de funciones.Textopor lo tanto, uno puede darse cuenta de que cuando se usa dividirá las cadenas de fechas como texto, lo que crea un problema para futuras manipulaciones de datos (Nota: En Excel las fechas y horas se almacenan como números, por lo tanto la parte entera representa las fechas mientras que la decimal es la hora de la fecha.)
Por lo tanto, como lo menciona el usuario en OP, DATEVALUE()
se puede convertir a fechas verdaderas o usando double unary
, sumando, 0
multiplicando o 1
buceando 1
, lo que eventualmente convierte.
- Una vez hecho lo anterior, podemos envolverlo dentro de
MAX()
la función para devolverúltimo/mayor/máximo/más alto(lo que convenga decir) fecha.
Razones:
Por qué el usuario obtenía 0
mientras usaba la fórmula proporcionada por mí, mientras obtenía el resultado respectivo usando DATEVALUE()
, para explicar, la captura de pantalla lo aclara.
- El usuario estaba usando el delimitador solo punto y coma
;
mientras yo usaba punto y coma y un espacio;
- Entonces, cuando se envolvía
MAX()
con el doble unario, devolvía un error, ya que solo convertía el primero en un número, mientras que el segundo devolvía un error porque tenía un espacio inicial. Pero el que tiene un punto y coma delimitador y un espacio debería funcionar, consulte las capturas de pantalla.
- Al usar
DATEVALUE()
la función, se ocupa del espacio inicial y lo convierte en un número y, por último, envolverlo dentroMAX()
proporciona el resultado deseado. Se han mencionado formas alternativas al principio usando;
, y otra forma de lidiar con esto es usarTRIM()
=MAX(--TRIM(TEXTSPLIT(A3,";")))
Respuesta2
no lo he probadola respuesta proporcionada por @MayukhBhattacharya, pero agradezco la información proporcionada, así que le di la respuesta a ese usuario.
Determiné que las respuestas debían cambiarse a DateValue, así que inserté la fórmula DATEVALUE entre las fórmulas MAX y TEXTSPLIT.
La fórmula que utilicé fue:
=MAX(DATEVALUE(TEXTSLIT(A2, ";")))
Vea el ejemplo a continuación:
Asegúrese de formatear la celda usando el campo de fecha corta.