Как найти количество конфликтов в таблице? - PullRequest
1 голос
/ 05 октября 2019

Я работаю за столом, в котором перечислены все курсы и все студенты, и пытаюсь выяснить, какие курсы можно поставить на один и тот же промежуток времени без каких-либо конфликтов (чтобы не было более одного экзаменав то же время) в Google Sheets или Microsoft Excel.

Ниже приведен простой пример основной таблицы

StudentID Course Name
1          Math
1          English
1          Computer
2          English
2          Computer 
3          Physics

, и я хочу что-то подобное ниже

           English    Computer    Physics
Math        No           No         Yes
English     -            No         Yes
Computer    No           -          Yes
Physics     -            Yes        -

Проще говоря, я хочу знать, какие курсы можно собрать в один и тот же промежуток времени без конфликтов.

Ответы [ 2 ]

1 голос
/ 06 октября 2019

вставить в ячейку D2 :

=UNIQUE(B2:B)

0

вставить в ячейку E1 :

=TRANSPOSE(UNIQUE(B3:B))

0

вставьте в ячейку 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")))

0

0 голосов
/ 06 октября 2019

Google Sheets

При условии, что количество уникальных идентификаторов учеников совпадает с количеством идентификаторов учеников по двум предметам:

=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"))

enter image description here

Вы можете сделать это немного короче, просто с помощью группового запроса, чтобы проверить, есть ли у одного из студентов более одного из двух курсов:

=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"))

Предполагается, что идентификаторы являются числовыми. Должен быть введен как формула массива, используя Ctrl Shift Введите .

enter image description here

...