Excel 如何处理函数的组合?

Tal*_*ris 22 microsoft-excel microsoft-excel-2010

我试图使用函数将今天的一天作为 Excel 中的数字。例如,当我写这个问题时,我应该得到 $18$。

我尝试使用:

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

因此,公式

=DAY(TODAY())
Run Code Online (Sandbox Code Playgroud)

应该给出我想要的结果。

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

如果我使用

=TODAY()
Run Code Online (Sandbox Code Playgroud)

在单元格 A1 中,然后

=DAY(A1)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

小智 42

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

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

  • 这可能有助于解释_为什么_格式化会这样做。Excel 将时间戳存储为“自 1900 年 1 月 0 日 00:00:00 以来的天数”,小时、分钟和秒作为一天的小数点(1900 年 1 月 1 日中午是“1.5”)。 (3认同)

小智 9

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

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

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

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

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