Правильный Способ «ПОДСЧЕТА», Который Учитывается Только Один Раз

#google-sheets #google-sheets-formula

Вопрос:

Я пытаюсь подсчитать уникальные значения столбца, основываясь на их статусе в другом столбце, пример:

Клиенты Лицензия Активна
Адам ДА
Барри НЕТ
Адам НЕТ
Клэр НЕТ

В этой ситуации я хочу знать, у скольких клиентов есть хотя бы 1 активная лицензия, а у скольких клиентов нет хотя бы одной активной лицензии.

Формулу я пробовал это: =COUNTUNIQUEIFS(A2:A,B2:B,"Yes") это возвращается 1 в данной ситуации, что является правильным, так как есть 1 клиент, который имеет Да в столбце B. моя проблема, когда я пытаюсь сделать обратное, считать «нет», используя эту формулу: =COUNTUNIQUEIFS(A2:A,B2:B,"No") она возвращает 3 что это не желаемый результат, так как он рассчитывает второй Adam в качестве уникального значения, потому что у них «нет» в столбце B.

Результат , который мне здесь нужен, таков 2 , потому что у Адама где-то в столбце B есть «да», поэтому я не хочу, чтобы его снова учитывали при следующем подсчете его поля.

Ответ №1:

Мне кажется, что самый простой способ получить счет «Нет» — это так:

=COUNTUNIQUE(A2:A)-COUNTUNIQUEIFS(A2:A,B2:B,"Yes")

Это еще проще, если вы уже перенесли количество «Да» в ячейку (скажем, C2), и в этом случае количество «Нет» можно было бы получить довольно просто с помощью этого:

=COUNTUNIQUE(A2:A)-C2

Комментарии:

1. Спасибо, Эрик, это сработало и является самым простым решением. Очень признателен.

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

Ответ №2:

Я не думаю, что вы сможете сделать это за один шаг — попробуйте отфильтровать тех, у кого хотя бы одно «Да», как это:

 =countunique(filter(A2:A,countifs(B2:B,"Yes",A2:A,A2:A)=0))
 

введите описание изображения здесь


Объяснение

Когда у графов есть диапазон вместо одного значения в графах части критериев(B2:B,»Да»,A2:A,A2:A) , графы повторно оцениваются для каждой ячейки в диапазоне. Таким образом, вы получаете массив с результатами

 countifs(B2:B,"Yes",A2:A,A2)
countifs(B2:B,"Yes",A2:A,A3)
countifs(B2:B,"Yes",A2:A,A4)
countifs(B2:B,"Yes",A2:A,A5)
 

и так далее по всей колонне.

Первые приведенные выше графы проверяют прямо через a2:a и b2:b, чтобы увидеть, есть ли какие-либо случаи, когда имя Adam и условие лицензии верно, и получает количество 1, чтобы строка была отфильтрована. То же самое происходит в следующей строке, содержащей Адама (строка 4) — графы проверяются прямо в обоих столбцах, исключая заголовки, и количество по-прежнему равно 1, так что строка также отфильтровывается, оставляя только Барри и Клэр.

Если вы хотите исключить все записи, содержащие «Тест» в столбце «Клиент», вы можете добавить условие в фильтр, используя оператор умножения на «И», с существующим условием:

 =countunique(filter(A2:A,(countifs(B2:B,"Yes",A2:A,A2:A)=0)*(A2:A<>"Test")))
 

Если бы у вас было несколько имен для исключения, вы, вероятно, захотели бы составить их список и использовать поиск, чтобы формула не становилась слишком длинной и громоздкой, но это была бы та же идея.

Комментарии:

1. Большое спасибо, Том, это сработало, и так как это немного надежнее, чем ответ Эрика выше (который также работал нормально) Я принял это, поскольку это позволяет мне немного легче перейти к следующему шагу моей формулы, потому что она более четко выражает то, что я пытаюсь сделать. Если у вас есть минутка, не могли бы вы рассказать мне, как в этом случае работает «фильтр» с «графами»; как он отфильтровывает ВСЕ экземпляры точного соответствия в A:A, если у любого из них есть «Да» в B:B? Я не совсем понимаю эту часть 🙂

2. Том, еще один вопрос, если можно: есть ли какой-либо способ фильтрации внутри фильтра, чтобы исключить конкретную запись из подсчета? Например, если в A:A была запись «Тест» , которой было присвоено несколько строк. Есть ли какой-либо способ добавить это в фильтр, чтобы он только «подсчитывал», исключая любые ячейки в A:A, которые являются «Тестовыми»

3. Да, конечно, я просто выхожу, но посмотрю позже.

4. Объяснение добавлено к ответу.