根据另一列中的特定时间范围返回一列中的值

Returning a value in a column based on a specific time range in another column

我正在尝试为 return 四个独立值之一创建一个函数(20:00-03:59 = LATE;04:00-09:59 = MORNING;10:00-14:59 = AFTERNOON; 15:00-19:59 = EVENING) 在基于另一列的时间范围的新列中。例如,如果“start_time”列中的时间在04:00-09:59 之间,我希望函数在“period_of_day”列中return MORNING。谢谢。

Link to sample sheet

一个简单的解决方案可以使用函数 HOUR 来提取时间列的小时,然后使用 IFAND 来执行条件,如下所示:

=IF(AND(HOUR(A2) >= 4, HOUR(A2) < 10), "MORNING", IF(AND(HOUR(A2) >= 10, HOUR(A2) < 15), "AFTERNOON", IF(AND(HOUR(A2) >= 15, HOUR(A2) < 20), "EVENING", "LATE")))

您真的根本不需要当前的 E 列(除非您只是喜欢孤立地看那个时间)。 Col-F 公式的使用不是必需的。

现在,删除 F 列的 all(包括 header)并将以下内容粘贴到 F1 中:

=ArrayFormula({"period_of_day";IF(D2:D="",,IFERROR(VLOOKUP(MOD(D2:D,1),{TIME(0,0,0),"LATE";TIME(4,0,0),"MORNING";TIME(10,0,0),"AFTERNOON";TIME(15,0,0),"EVENING";TIME(20,0,0),"LATE"},2,TRUE)))})

这将生成 header 和所有行的所有结果。

正如我所说,在这个公式进入您的 sheet 之后,您真的可以完全删除 E 列,因为它是不必要的。根据您要处理的数据量,您应该尽可能 trim 以获得最佳结果(包括删除未使用的列,如 Col I 和 Col J)。