Преобразование положительных числовых значений в логическое значение TRUE в Excel

Преобразование положительных числовых значений в логическое значение TRUE в Excel

Я пытаюсь обобщить все записи, основываясь на нескольких конкретных условиях.

Цель состоит в том, чтобы подсчитать все записи, в которых в ячейках J, K, L или M отмечено «да», а в ячейках H стоит «1-й».

Вот формула, которую я сейчас использую:

=SUMPRODUCT((('J2:J100="yes") + (K2:K100="yes") + (L2:L100="yes") + (M2:M100="yes")) * (H2:H100="1st"))

Это почти работает.

Проблема в том, что я хочу посчитать запись только один раз, если у него есть «да» для любой из 4 ячеек (J, K, L, M), а не несколько раз. Так, например, если одна запись имеет «да» в обеих ячейках K и L и имеет 1-е место в H, то он будет посчитан дважды, а не один раз.

Это потому, что функция СУММПРОИЗВ даст результат 0 + 1 + 1 + 0 * 1, что равно 2.

Я думаю, что если бы существовал способ преобразовать первую часть функции, которую я написал, в логическое значение так, чтобы любое положительное значение обрабатывалось как 1, а любое отрицательное — как False, то это решило бы мою проблему.

решение1

Добавить>0

=SUMPRODUCT((('J2:J100="yes") + (K2:K100="yes") + (L2:L100="yes") + (M2:M100="yes")>0) * (H2:H100="1st"))

Сейчас

(0 + 1 + 1 + 0 > 0) * 1

Станет

1 * 1

который1

решение2

>0очевидно, будет работать хорошо и, вероятно, быстрее, чем функция.

Возможно, вам (через два года) или кому-то другому, кто когда-нибудь будет заниматься ведением электронной таблицы, будет не совсем понятно, в чем заключается идея.

В Excel есть функция, OR()которая очень хорошо охватывает эту ситуацию. Вместо четырех отдельных сравнений, которые производят 1/0, добавляются, сравниваются и т. д., она просто, понятно всем, сейчас и навсегда, выполняет четыре сравнения и выдает один единственный 1 или 0 в качестве своего вывода.

Ну, не напрямую: он выдает ИСТИНА или ЛОЖЬ, но умножение его на элемент столбца H преобразует его результат в 1 или 0 и позволяет умножению быть успешным. (Вот что происходит, когда вы видите, что люди используют методы --или *1для приведения к одному и тому же эффекту. Но ЛЮБОЕ умножение срабатывает, а не только эти, так что они не нужны.)

Но людям нравится маршрут (0+1+1+0), и для них это не проблема, но если вам нужен другой простой метод, то OR()он вам подойдет.

Связанный контент