¿Cómo maneja Excel la composición de funciones?

21

Estaba tratando de usar funciones para obtener el día de hoy como un número en Excel. Por ejemplo, cuando escribí esta pregunta, debería haber obtenido $ 18 $.

Traté de usar:

  1. la función TODAY()que devuelve la fecha de hoy en un formato de fecha.
  2. Day(<date>)que devuelve el número de día de <date>. Eso DAY(19/05/1984)debería devolver 19.

Por lo tanto, la fórmula

=DAY(TODAY())

Debería dar el resultado que quería.

Sin embargo, este regreso 18/01/1900 (cuando se usa la función hoy)

Si yo uso

=TODAY()

en la celda A1 y luego

=DAY(A1)

en otra celda obtengo el resultado correcto.

¿Por qué DAY (TODAY ()) no da el resultado esperado?

Desde mi experiencia de matemático y programador aficionado (en Maple, Java y Python), mi composición de funciones parece estar bien.

De manera más general, ¿cómo maneja Excel la composición de las fórmulas?

Taladris
fuente
11
La respuesta correcta es "mal".
Carl Witthoft
Soporte de Office para funciones de Excel ... incluso dice: =DAY(TODAY())... Devuelve el día actual del mes (1 - 31) ..
txtechhelp

Respuestas:

40

Tu fórmula es correcta; es la forma en que Excel formatea las celdas lo que es confuso. Por ejemplo, si establece manualmente un valor de celda 18y luego cambia el formato a una fecha, se mostrará como January 18, 1900.

Si cambia el formato de la celda con su fórmula a "General", debería mostrar el resultado que espera.

apple9321
fuente
3
Puede ser útil explicar por qué el formateo está haciendo esto. Excel almacena las marcas de tiempo como "días desde las 00:00:00 del 0 de enero de 1900", con horas, minutos y segundos como decimales de un día (el mediodía del 1 de enero de 1900 es "1.5").
Carl Kevinson el
Y Excel tendrá el formato predeterminado de fecha u hora tan pronto como se utilice cualquier tipo de valor de fecha / hora. Esa puede ser otra celda que está formateada de esa manera o funciona como TODAY(). Realmente molesto cuando los usa solo en funciones de descomposición y tiene que volver a cambiar el formato.
monstruo de trinquete
1
Tangencialmente relevante: sciencemag.org/news/2016/08/… [Uno de cada cinco documentos genéticos contiene errores gracias a Microsoft Excel]
Darren Ringer
@DarrenRinger Siempre lo leí como "culpar a sus herramientas", el punto clave de que el periódico es permanecer alerta . Me ha sucedido algo similar (aunque no en genética) y, como todos los demás, creo que "Excel cambió esa cifra a ...", aunque debería decirme "maldición, no tuve en cuenta que esa cifra cambiaría a ..... "
Darren Bartrup-Cook
9

Creo que puede estar confundido al pensar que Excel manipula los valores de 'fecha': no ​​lo hace.

Cómo usar fechas y horas en Excel

En Excel, los números se usan para representar fechas (el número de días posiblemente fraccional desde el 0 de enero de 1900), pero Excel los almacena y manipula como números. TODAY () es una función de valor numérico, y DAY () es una función de un argumento numérico a un resultado numérico.

En su caso, DAY (HOY ()) devolvió correctamente 18 (un número) que imagino que asignó a una celda que está formateada para mostrar una fecha en forma corta, de modo que 18 se muestra como 18/01/1900. Porque para Excel, cuando 18 se interpreta como una fecha, eso es lo que significa.

Si formatea esa celda a un formato numérico, verá la respuesta mostrada de la manera que esperaba, es decir, 18.

Spike0xff
fuente
2

No hay nada malo con tu fórmula. Lo que me gustaría sugerirle, si la Fórmula no produce el resultado esperado, entonces produce Error o el resultado Incorrecto. Ya que no has mencionado lo que la Fórmula tiene, ¡cocina!

Mientras tanto, me gustaría mostrarle cuáles son las posibilidades de obtener el valor DÍA en Número en Excel.

Verifique la captura de pantalla a continuación.

Obtener día en número

NÓTESE BIEN:

La fecha está en la celda E166 . La segunda columna F tiene resultados y la tercera columna G muestra la fórmula para la que he usado.

También puede usar la función TEXTO para obtener el valor del día como datos de texto.

El valor es ROJO El color tiene un formato de celda personalizado DD, puede aplicarlo en la celda (S) para mostrar solo los valores de día de la fecha (S).

Tenga en cuenta que le he sugerido todas las posibilidades, ya que ha mencionado que básicamente no es un usuario de Excel.

Espero que esto te ayude, no olvides publicar el ERROR que ha dado tu Fórmula.

Rajesh S
fuente
1

Tu fórmula está compuesta correctamente. El resultado inesperado se debe a la forma en que Excel almacena los diferentes tipos de datos.

Hay dos sistemas similares que Excel usa para almacenar fechas, en función de una configuración de nivel de libro.

El sistema de fechas de 1900

En el sistema de fechas de 1900, el primer día admitido es el 1 de enero de 1900. Cuando ingresa una fecha, la fecha se convierte en un número de serie que representa el número de días transcurridos desde el 1 de enero de 1900. Por ejemplo, si ingrese el 5 de julio de 1998, Excel convierte la fecha al número de serie 35981.

De manera predeterminada, Microsoft Excel para Windows usa el sistema de fechas 1900. El sistema de fechas 1900 permite una mejor compatibilidad entre Excel y otros programas de hojas de cálculo, como Lotus 1-2-3, que están diseñados para ejecutarse en MS-DOS o Microsoft Windows.

El sistema de fechas de 1904

En el sistema de fechas de 1904, el primer día admitido es el 1 de enero de 1904. Cuando ingresa una fecha, la fecha se convierte en un número de serie que representa el número de días transcurridos desde el 1 de enero de 1904. Por ejemplo, si ingrese el 5 de julio de 1998, Excel convierte la fecha al número de serie 34519.

De manera predeterminada, Microsoft Excel para Macintosh utiliza el sistema de fechas 1904. Debido al diseño de las primeras computadoras Macintosh, las fechas anteriores al 1 de enero de 1904 no eran compatibles. Este diseño tenía la intención de prevenir problemas relacionados con el hecho de que 1900 no fue un año bisiesto. Si cambia al sistema de fechas 1900, Excel para Macintosh admite fechas tan tempranas como el 1 de enero de 1900.

Estos extractos se han tomado de: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

El número de serie es un recuento simple de la cantidad de fechas desde el 1 de enero de 1900, incluida la fecha ficticia del 29 de febrero de 1900. Sin embargo, la función DÍA también puede considerarse como una función de conversión de tipo de datos. Toma un número de serie de fecha como entrada y devuelve un entero como salida. En su ejemplo, si consideramos que 18 representa una fecha de serie y contamos 18 días hacia adelante desde el 1 de enero de 1900, terminamos con el 18 de enero de 1900.

La solución simple en el extremo frontal es cambiar el formato de su celda a algo más como Número o General . Esto le indicará a Excel que se lo muestre como un entero, en lugar de tratar de interpretarlo como una serie de fechas. En la parte de atrás, todo está listo. El resultado entero se puede usar en cualquier otra fórmula y se comportará correctamente.

Como ejemplo, digamos que queríamos crear una fórmula condicional que nos dijera si el 15 ha pasado o no en el mes actual. Podemos hacer esto usando:

=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")

Sería mucho más difícil lograr el mismo resultado utilizando una serie de fechas, por lo que la función DÍA que devuelve un entero termina siendo más útil en el contexto de los casos de uso comunes de Excel.

Skoddie
fuente