我正在尝试建立一个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。
答案 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,后者会在相应的列中找到该行并返回该单元格的地址。
现在,这样您就知道了。设置了时间中断点,以便在列出时间旁边的人是在提供该确切时间时将被选中的人。意味着对于指定日期0900的时间,将选择Bob。在10:00:01将选择Ben。在11:00:01将生成错误。您可以通过将整个对象放在IFERROR函数中来控制它。在00:00:00,Bob被选中。
答案 2 :(得分:0)