Подсчет вхождений строк только один раз за строку в Google Sheets - PullRequest
0 голосов
/ 31 мая 2018

У меня есть строки данных электронных таблиц, которые необходимо подсчитать по «типу», но не по экземпляру.

   A   B C D
 1 Lin 1 2 1
 2 Tom 1 4 2
 3 Sue 3 1 4

Правильная сумма студентов, назначенных учителю 1, равна 3, а не 4. Этот учитель 1 встречается с Линем вуроки B и D. не имеют значения для подсчета.

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

F5=SUMPRODUCT(SIGN(COUNTIF(OFFSET(B$2:D$2, ROW($2:$4)-1, 0), E5)))

  A   B C D E 
2 Lin 1 2 1
3 Tom 1 4 2
4 Sue 3 1 4
5           1 [exact string being searched for, ie a teacher name]

Я не знаю, что не понимают Google Sheets в этой формуле.Кто-нибудь знает правильное выражение для использования или более эффективный способ получить точный счетчик мне нужно, без дубликатов в строках, раздувающих счет?

1 Ответ

0 голосов
/ 31 мая 2018

Таким образом, это метод mmult, который работает путем нахождения итоговых чисел студентов, назначенных учителю 1 и т. Д., А затем выяснения, сколько итогов больше, чем 0.

=ArrayFormula(sum(--(mmult(n(B2:D4=E5),transpose(column(B2:D4)))>0)))

или

=ArrayFormula(sum(sign(mmult(n(B2:D4=E5),transpose(column(B2:D4))))))

Также работает в Excel, если вводится как формула массива без оболочки ArrayFormula.

Определенный Google Sheets может быть довольно коротким

=ArrayFormula(COUNTUNIQUE((B2:D4=E5)*row(B2:D4)))-1

, считая уникальные строкисодержит совпадение.

Примечание - Я вычитаю 1 в последней формуле выше, потому что я предполагаю, что есть хотя бы один ноль (несоответствие), который следует игнорировать.Это не получится в крайнем случае, когда все ученики во всех классах назначены одному и тому же учителю, поэтому у вас есть матрица (например) всех 1.Это было бы более теоретически правильно:

=ArrayFormula(COUNTUNIQUE(if(B2:D4=E5,row(B2:D4),"")))
...