【问题标题】:Splitting Multiple Ranges from a Single Range in Google Sheets从 Google 表格中的单个范围拆分多个范围
【发布时间】:2020-08-04 17:44:45
【问题描述】:

我正在为我的公司构建一个日程安排工具。我的 Google 表格文档的结构是一个摘要页面,其中包含为每个部门的每个员工制定的整个时间表。然后,每个员工都有自己的工作表。在每个员工表中,我都有一个针对周日、周一和周二(每个员工工作的日子)的部分。在每天的每个部分中,我都有一列指示他们在时钟上的时间,然后是每个部门的一列。我在每个单元格中放置了一个复选框,并且可以激活该复选框以指示该员工将在相应的时间在该部门工作。但是,有时员工每天在一个部门工作不止一次,这意味着带有复选框的列例如选中了对应于上午 7 点至上午 10 点和下午 2 点至下午 5 点的单元格,而单元格中未选中的框对应于上午 11 点至下午 1 点。

如果员工每天只在该部门一次,我有查询功能可以提取该部门的开始和结束时间。经过一些连接后,输出类似于“7AM-2PM”。

=QUERY(A4:C17, "Select MIN(A) where (C=TRUE)")

=QUERY(A4:C17, "Select MAX(A) where (C=TRUE)")

但是,我想不出一种区分多个开始时间和结束时间的方法。使用上面的例子,我希望我的输出是“7AM-10AM”和“2PM-5PM”。这些可以在不同的单元格或同一个单元格中,对我没有影响。如果后面的公式需要对前面的公式进行运算,也可以在多个单元格中存在公式。

我希望这在我描述的方式中是有意义的。几个星期以来,我一直在努力想出一些东西,但时间已经不多了。感谢您的所有帮助!

【问题讨论】:

  • 分享您的工作表副本

标签: arrays if-statement google-sheets split array-formulas


【解决方案1】:

尝试:

=ARRAYFORMULA(IFNA(TEXTJOIN(CHAR(10), 1, 
 TEXT(FILTER($A4:$A17, IF((B4:B17=TRUE)*({FALSE; B4:B16}=FALSE), 1, )=1), "hh:mm\ - ")&
 TEXT(FILTER($A4:$A17, IF((B4:B17=TRUE)*({B5:B17; FALSE}=FALSE), 1, )=1), "hh:mm"))))

【讨论】:

  • 太棒了!非常感谢您提供此解决方案以及回复速度。现在来剖析和了解这个公式的每个部分到底是做什么的。
猜你喜欢
  • 2021-02-24
  • 2020-02-28
  • 2013-11-09
  • 2021-09-09
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多