Подтвердить что ты не робот

Как применить логический ИЛИ к массиву в Excel

Я пытаюсь, чтобы Excel сделал мне массив с помощью ORing двух массивов. В качестве примера позвольте двум массивам A1: A3 быть 7, 8, -3 и B1: B3 be 4, -8, -8

Это должно быть довольно просто, но кажется, что

OR ( A1:A3 > 0 ; B1:B3 > 0 )

возвращает TRUE вместо массива, который я ожидаю (TRUE, TRUE, FALSE).

Конечно, я мог бы использовать грязный трюк, например

(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1

но кто хотел бы сохранить это?

Кроме того, есть что-то, что можно найти вокруг "Формулы CSE (Ctrl-Shift-Enter)" (http://www.mrexcel.com/articles/CSE-array-formulas-excel.php), но это действительно выглядит как черная магия.

Я пропустил что-то простое?

Для тех, кто интересуется этим, фактическая формула, которую я пытаюсь построить, немного сложнее, конечно. Он пытается подсчитать (через SUMPRODUCT) все строки, где "(status == A OR status == B) AND Date = some cell". OR, который я ищу, - это всего лишь один массив моего sumproduct и не определен в ячейках (это было бы слишком легко)

4b9b3361

Ответ 1

Обычно вы не можете использовать OR или AND в "формулах массива", потому что, как вы обнаружили здесь, они возвращают только один результат (И ИСТИНА, только если все условия TRUE, OR is TRUE - это TRUE, как и следовало ожидать, поэтому в вашем примере вы получите TRUE, если хотя бы одно из 6 значений положительно).

Я бы использовал что-то похожее на ваше предложение, используя + вместо OR эффективно, хотя вам не нужны первые два * 1, потому что + co-erces, поэтому этого было бы достаточно

=((A1:A3 > 0) + (B1:B3 > 0) >0) *1

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

=(A1:A3="A")+(A1:A3="B")

Ответ 2

Чистым и относительно простым способом является использование вложенных операторов IF:

IF(A1:A3 > 0, TRUE, IF(B1:B3 > 0, TRUE, FALSE))

Это возвращает TRUE, если число в больше 0, а если нет, возвращается TRUE, если число в B больше 0, но в противном случае возвращает FALSE.

В основном вы просто пишете свою собственную функцию ИЛИ. Вы можете сделать то же самое с AND. Пока у вас есть условные обозначения и нет, вы можете сделать все остальное из них.

Ответ 3

Я сделал формулу массива для медианы определенных данных в таблице. Например, в данных были группы X, Y и Z. Я хотел получить медиану для двух типов данных, X и Y, поэтому не мог использовать оператор OR в массиве.

Что я сделал, так это создать новый столбец в исходном наборе данных. Это столбец IF = X или = Y, отображается "1", IF Не отображать "0"

Затем я написал формулу Array на основе нового столбца, так как все группы данных были реклассифицированы в этом столбце как 1 или 0, мне больше не нужен оператор OR в массиве.

Это сработало для меня, и я могу легко скопировать и вставить новые данные в исходную таблицу, не запутывая этот новый оператор IF, поэтому его легко обновить.