【问题标题】:How to find number of conflicts in a table?如何查找表中的冲突数?
【发布时间】:2020-02-03 16:51:09
【问题描述】:

我正在制作一张表,其中列出了所有课程和学生的列表,并试图找出哪些课程可以放在同一时间段而不发生任何冲突(以防止有多个考试同时) 在 Google 表格或 Microsoft Excel 中。

下面是一个简单的主表示例

StudentID 课程名称 1 数学 1 英语 1 台电脑 2 英语 2 电脑 3 物理

我想要类似下面的东西

英语计算机物理 数学 否 否 是 英语 - 否 是 计算机 否 - 是 物理 - 是的 -

简单地说,我想知道哪些课程可以放在同一时间段内而不会发生冲突。

【问题讨论】:

  • 你能添加一个班级时间段的示例吗?你已经尝试过什么?
  • 能不能说的更具体点!其实我们是用另外一个软件来设计日程的,不过还需要一点准备工作。

标签: excel if-statement google-sheets filter array-formulas


【解决方案1】:

粘贴到单元格D2

=UNIQUE(B2:B)

粘贴到单元格E1

=TRANSPOSE(UNIQUE(B3:B))

粘贴到单元格E2并向下拖动,然后向右拖动:

=ARRAYFORMULA(IF(E$1=$D2, "-", 
 IF(SUM(N(REGEXMATCH(FILTER($A$2:$A, $B$2:$B=E$1)&"", 
 "^"&TEXTJOIN("$|^", 1, FILTER($A$2:$A, $B$2:$B=$D2))&"$")))=0, "yes", "no")))

【讨论】:

    【解决方案2】:

    Google 表格

    条件应该是唯一学生证的数量与两个科目的学生证数量相同:

    =if(E$1=$D2,"-",if(count(filter($A2:$A,regexmatch($B2:$B,E$1&"|"&$D2)))=countunique(filter($A2:$A,regexmatch($B2:$B,E$1&"|"&$D2))),"Yes","No"))
    

    您可以使用分组查询来测试是否有学生拥有两门以上课程中的一门以上:

    =if(E$1=$D2,"-",if(max(query($A2:$B,"select count(A) where B='"&E$1&"' or B='"&$D2&"' group by A"))=1,"Yes","No"))
    

    Excel

    这需要更多的努力 - 您可能会使用频率来获得与在 Google 表格中进行分组相同的效果。逻辑是一样的:

    =IF(E$1=$D2,"-",IF(MAX(FREQUENCY(IF(($B$2:$B$7=E$1)+($B$2:$B$7=$D2),$A$2:$A$7),$A$2:$A$7))=1,"Yes","No"))
    

    这假定 ID 是数字。必须使用 CtrlShiftEnter 作为数组公式输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2016-10-29
      • 2014-12-16
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多