首页 > 解决方案 > 如何使用当前时间和日期显示特定值?

问题描述

我正在尝试设置一个 Excel 表,其中显示当前时间和日期可用的人的姓名。我有一张包含日期和时间列表以及当时可用的人员姓名的表格。例如:

- 01/07/19 09:00 Bob
- 01/07/19 10:00 Bill
- 01/07/19 11:00 Ben

我可以使用 WEEKNUM 或 DAYNUM 函数以及在名称列表中列出的周/日编号成功地完成这一整天或一周。

我可以使用 NOW() 来获取当前日期和时间,但我不确定如何使用它来获得所需的结果。

我试过在网上搜索答案,但一直找不到我要找的东西。

根据我上面的示例,如果当前时间在 9:00 和 10:00 之间,我希望显示名称 Bill。

标签: excelexcel-formula

解决方案


根据您的日期是存储为 excel 数字的实际日期,而不是存储为文本的数字,并且时间相同,那么以下解决方案应该适合您。您可以使用以下方法测试您的数据以查看其是否为实际日期:

=ISNUMBER(A2) `where A2 is the cell in question

如果公式返回 true,那么您知道您正在处理已格式化为显示为日期或时间的数字。

作为旁注,日期存储为整数,并且是自 1900/01/01 以来的天数,该日期为 1。时间存储为代表一天中部分的小数。0.5 是中午 12 点。

此解决方案假定数据按照下图进行布局。

在单元格 F1 中,放置您的NOW()函数。我已经手动输入了日期来控制用于演示目的的值。

在单元格 F2 中输入以下公式:

=INDEX(C:C,AGGREGATE(15,6,ROW($A$2:$A$4)/((INT($F$1)=$A$2:$A$4)*(MOD($F$1,1)<=$B$2:$B$4)),1))

AGGREGATE 将创建一个列表或所有行号,并将它们从大到小排序。所有这些行号将除以您的标准检查。如果您的标准结果为 ALL True,则该行除以 1 并保持不变。如果不满足条件,则行号除以 0,这会导致错误。函数中的 6 告诉聚合忽略错误结果。因此,您最终会得到一个符合您标准的列表或行号。聚合中的 15 告诉聚合从最大到最小对行号进行排序。1 告诉聚合返回排序列表位置 1 的行号。然后聚合将该行号传递给 INDEX,INDEX 在相应列中找到行并返回该单元格的地址。

POC

现在只是让你知道。设置了时间的断点,以便列表时间旁边的人是在提供确切时间时将被选中的人。这意味着在指定日期 0900 的时间,Bob 将被选中。10:00:01 Ben 将被选中。在 11:00:01 将生成错误。您可以通过将整个事物放在 IFERROR 函数中来控制它。在 00:00:00 Bob 被选中。


推荐阅读