在 Google 工作表中突出显示一系列数据的重叠时间,并在列中显示开始和结束时间

问题描述 投票:0回答:1

A 部分

Google Sheet 中有多行数据,其开始和结束时间的格式如图所示。该数据已经过处理并从更大的数据集中过滤出来,仅显示今天的日期。如何在这些固定数据行中突出显示具有重叠时间的整行(任何给定日期最多可以有 30-35 行过滤数据?

示例数据表:https://docs.google.com/spreadsheets/d/1rgLpTlQfhWRQgPLlX4OLPzdMfinCMeftvUTcd6GJOMw/edit?usp=sharing

所需输出:

enter image description here

B 部分

如果在上面的开始和结束时间表中登录的时间可以在下面的时间表中显示为灰色突出显示(这将表明该时间不可用或绿色-),这也可能会有所帮助突出显示尚未打卡的时间以显示其空闲时间)。

时间块:

enter image description here

考虑使用 vlookup 公式,但这只会突出显示第一次遇到的情况,并且可能不会捕获任何后续的重叠。 然后尝试使用匹配功能:

=ISNUMBER(MATCH(R2,N:N,0))
。但这在条件格式自定义公式空间中不起作用。

我愿意接受涉及应用程序脚本或带有自定义公式的单元格内条件格式的解决方案。

google-sheets google-sheets-formula date-range
1个回答
0
投票

突出显示具有重叠时间的整行

将各种“开始”列压缩为一列,如下所示:

=byrow(D2:G, lambda(row, if(len(join("", row)), max(row), iferror(ø))))

然后收集预订重叠的工人,如下所示:

=let( 
  workers, arrayformula(B2:B & " (row " & row(B2:B) & ")"), 
  starts, K2:K, 
  ends, J2:J, 
  map(starts, ends, lambda(s, e, 
    iferror( 
      torow(filter(workers, row(s) <> row(starts), s < ends, e > starts)) 
    ) 
  )) 
)

最后,使用条件格式自定义公式规则来绘制发现重叠预订的行:

=len($L2)

参见解决方案

© www.soinside.com 2019 - 2024. All rights reserved.