Excel 如何处理函数组合?

Excel 如何处理函数组合?

我尝试使用函数在 Excel 中获取今天的日期作为数字。例如,当我写这道题时,我应该得到 $18$。

我尝试使用:

  1. TODAY()以日期格式返回今天日期的函数。
  2. Day(<date>)返回 的天数<date>。也就是说DAY(19/05/1984)应该返回 19。

因此,公式

=DAY(TODAY())

应该会给出我想要的结果。

但是,这将返回 18/01/1900(今天使用该函数时)

如果我使用

=TODAY()

在单元格 A1 中,然后

=DAY(A1)

在另一个单元格中,我获得了正确的结果。

为什么 DAY(TODAY()) 没有给出预期的结果?

从我的数学家和业余程序员(使用 Maple、Java 和一些 Python)的背景来看,我的函数组合似乎很好。

更一般地说,Excel 如何处理公式的组合?

答案1

您的公式是正确的;Excel 格式化单元格的方式令人困惑。例如,如果您手动将单元格值设置为18,然后将格式更改为日期,它将显示为January 18, 1900

如果您将包含公式的单元格格式更改为“常规”,它应该会显示您期望的结果。

答案2

我认为您可能会对 Excel 操纵“日期”值感到困惑:它不能。

如何在 Excel 中使用日期和时间

在 Excel 中,数字用于代表日期(自 1900 年 1 月 0 日起的天数(可能是小数),但它们在 Excel 中以数字形式存储和操作。TODAY() 是一个数值函数,DAY() 是一个从数字参数到数字结果的函数。

在您的例子中,DAY(TODAY()) 正确返回了 18(一个数字),我想您将其分配给一个格式化为以短格式显示日期的单元格 - 因此 18 显示为 18/01/1900。因为对于 Excel 来说,当 18 被解释为日期时,它就是这个意思。

如果将该单元格格式化为数字格式,您将看到答案以您预期的方式显示,即 18。

答案3

您的公式没有任何问题。我想建议您,如果公式没有产生预期的结果,那么它会产生错误或错误的结果。由于您没有提到公式有什么问题!。

同时,我想向您展示在 Excel 中以数字形式获取 DAY 值的可能性。

查看下面的屏幕截图。

获取日期数字

注意:

日期在细胞E166第二列 F有结果,并且第三列 G显示我使用的公式。

您还可以使用 TEXT 函数将日期值作为文本数据获取。

值为红色,具有自定义单元格格式 DD,您可以在单元格上应用以仅显示日期的天值。

笔记,既然您提到您基本上不是 Excel 用户,那么我已经向您提出了所有可能性。

希望这对您有帮助,不要忘记发布您的公式所给出的错误。

答案4

您的公式编写正确。意外结果是由于 Excel 存储不同类型的数据的方式造成的。

根据工作簿级别设置,Excel 使用两个类似的系统来存储日期。

1900 日期系统

在 1900 日期系统中,支持的第一天是 1900 年 1 月 1 日。输入日期时,该日期将转换为序列号,表示自 1900 年 1 月 1 日以来经过的天数。例如,如果输入 1998 年 7 月 5 日,Excel 会将该日期转换为序列号 35981。

默认情况下,Windows 版 Microsoft Excel 使用 1900 日期系统。1900 日期系统可使 Excel 与其他电子表格程序(如 Lotus 1-2-3)更好地兼容,这些程序设计为在 MS-DOS 或 Microsoft Windows 下运行。

1904 日期系统

在 1904 日期系统中,支持的第一天是 1904 年 1 月 1 日。输入日期时,该日期将转换为序列号,表示自 1904 年 1 月 1 日以来经过的天数。例如,如果输入 1998 年 7 月 5 日,Excel 会将该日期转换为序列号 34519。

默认情况下,Macintosh 版 Microsoft Excel 使用 1904 日期系统。由于早期 Macintosh 计算机的设计,不支持 1904 年 1 月 1 日之前的日期。此设计旨在防止与 1900 年不是闰年相关的问题。如果切换到 1900 日期系统,Macintosh 版 Excel 会支持最早为 1900 年 1 月 1 日的日期。

这些摘录来自:https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

序列号是自 1900 年 1 月 1 日以来日期数量的简单运行计数,包括虚构的日期 1900 年 2 月 29 日。但是,DAY 函数还可以被视为数据类型转换函数。它需要一个日期 序列号作为输入并返回整数作为输出。在你的例子中,如果我们想到18表示日期序列,从 1900 年 1 月 1 日开始向前数 18 天,最终得到 1900 年 1 月 18 日。

前端的简单修复是将单元格格式更改为其他格式,例如数字或者一般的。这将告诉 Excel 将其显示为整数,而不是尝试将其解释为日期序列。在后端,一切都准备就绪。整数结果可用于任何其他公式,并且会正常运行。

举个例子,假设我们想创建一个条件公式,告诉我们当前月份是否已经过了 15 号。我们可以使用以下方法实现:

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

使用日期序列来实现相同的结果会困难得多,因此返回整数的 DAY 函数在 Excel 常见用例环境中更有用。

相关内容