我正在创建一个解决方案来自动检测使用 Google 工作表创建的时间表中的冲突。“冲突”意味着在同一天同一时间不同的课程应该有相同的老师或在同一个房间里。例如,在下表中,第 1 组和第 2 组应该同时在房间 2 中,这应该表示为“冲突”。
Monday Tuesday ...
room subject teacher tutor room subject teacher tutor ...
(group1)
09:00-10:00 1 math Smith Black
10:00-10:45 2 science Stones Moore
...
(group2)
10:00-10:45 2 math Smith Taylor
10:55-11:40 1 reading Anderson Harris
...
为了检查是否存在任何“同一老师”冲突,我添加了以下公式:
=if(OR(ARRAYFORMULA(D7={D19;D29}));"at this time teacher has another class for _ group";"ok")
然而,这样的解决方案有一些缺点。
主要的一个是:{D19;D29;...}
阵列是手动形成的,这并不好,至少非常脆弱。如果在计划的中间添加一行,大多数检查将中断。我想要做的是通过过滤 A 列中相同时间的行来获得必要的行,然后让单元格 D 进行比较。
另一个是,我无法获得(并显示)这位老师也应该教的“冲突”组(除非我手动创建另一个数组,对应于{D19;D29;...}
更多的手动工作),请参见_
公式。
我的问题是,我可以在 Google 表格中创建某种形式的循环/迭代来以某种方便的编码方式处理这个问题吗?或者您可能会建议另一种方法?
示例表上有一个名为 Conflict Finder (Simpler)的选项卡,您可以在单元格 G3 中找到此公式,在 H3 中可以找到一个非常相似的公式。它计算公共时间段和教师姓名的实例,如果大于 1,则输出单词“Conflict”
=ARRAYFORMULA({"Teacher Conflicts";IF(COUNTIFS($A4:$A;$A4:$A;D4:D;D4:D)>1;"Conflict";)})
创建带有数组公式的列后,您可以使用自定义公式应用条件格式以突出显示冲突的单元格并隐藏辅助列。例如,对于范围D4:D1000
适用=LEN(G4)
于给出红色背景(实际上,范围D4:E1000
也适用,因为 columnH
包含column 的冲突E
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句