如何使用当前时间和日期显示特定值?

时间:2019-07-03 19:52:02

标签: excel excel-formula

我正在尝试建立一个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。

3 个答案:

答案 0 :(得分:1)

我相信这会满足您的要求

=INDEX(C2:C4,MATCH(NOW()-TODAY(),B2:B4,1))

C列包含名称,B列包含时间

如果日期和时间在一栏中,您可以尝试:

=INDEX(B1:B3,MATCH(NOW(),A1:A3,1))

B列包含名称,A列包含日期和时间

答案 1 :(得分:1)

基于日期,即实际日期存储为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的行号。然后,Aggregate将该行号传递给INDEX,后者会在相应的列中找到该行并返回该单元格的地址。

POC

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

答案 2 :(得分:0)

这是一种方法:

enter image description here

F1中的公式:

=INDEX(C2:C4,MATCH(1,INDEX((A2:A4=TODAY())*(HOUR(B2:B4)<=HOUR(NOW()))*(HOUR(B2:B4)>=HOUR(NOW())),0,1),0))

发生了什么事?我们使用MATCH来获得TRUE列表中的第一个INDEX,该列表将A列与TODAY乘以HOUR的B列。

我们可以省去第二个INDEX,但这将使其成为要通过 Ctrl Shift Enter 输入的数组公式

请注意,此示例是在7月4日9:30左右制作的。