使用 QUERY 或 VLOOKUP 查找当前日期和时间

Lookup Current Day and Time with QUERY or VLOOKUP

我目前根据当前时间拉入一些预约时间段now()并从相邻的工作表中提取时间段。

我现在还想添加星期几作为参数。我是否需要做一些更高级的事情,比如 =query 或者我如何将其扩展到当前的 =vlookup

到目前为止,这是我使用 QUERY 和 VLOOKUP 得到的结果:

=query(TimeSlots!C2:F25, select 2,3,4,5 where Col1 = Live!A2 & where Col2 = Live!B2)

=vlookup(timevalue(B2), {iferror(value(regexextract(TimeSlots!B2:B, "(.+)\s-"))),TimeSlots!C2:F}, {2, 3, 4, 5}, 1))

https://docs.google.com/spreadsheets/d/1OOdLI-1j3d10LsfGdNPS4tOusx4AnRZvXzdgmrLvrSA/edit?usp=sharing

如果您想玩游戏并制作副本,here 链接。

我真诚地写这篇文章,以您的成功为中心;事情对你来说比他们需要的要困难一些,因为你打破了一些不成文的 spreadsheet 规范化规则。最突出的是,如果您希望在别处的公式中使用单元格,该单元格应采用表格原生格式。试试这个:

  1. Select 时间段列 B
  2. 从菜单中选择“插入”→“右侧列”
  3. 将 B 和 C 分别重命名为……"Time Slot Begin" 和 "Time Slot End"
  4. 编辑数据以在此新的拆分排列中重新创建您的范围(如果您想复制粘贴,请在下面包含)
  5. 有了统一的、本地可计算的数据源,您现在可以使用公式来获取工作日与 当前时间大于槽的开始时间并且当前时间小于槽的结束时间。

例如:

=FILTER( TimeSlots!A2:G29,
  A = TimeSlots!A2:A29,
  MOD(B,1) > TimeSlots!B2:B29,
  MOD(B,1) < TimeSlots!C2:C29
)

逐行,用英语,它:将时隙列表缩小到
行 sheet 的日子与 TimeSlot 的日子相匹配,并且
这个sheet的时间晚于(大于)时间段的开始,并且
此 sheet 的时间早于(小于)时间段的结束。

请注意,NOW() 输出一个日期时间,其中您使用 "cosmetic" 格式 仅显示时间 。为了仅查看 B2 日期时间的实际时间部分,我将除以 1 天并保留剩余时间。

这里是前面提到的时间开始和结束的列,如果你想把它们粘贴到位的话。 B 列:

Time Slot Begin
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00
07:00:00
09:00:00
16:00:00
20:00:00

和 C 列:

Time Slot End
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00
08:59:00
15:59:00
19:59:00
06:59:00