Страницы: 1
RSS
Формула массива суммирует не правильно
 
Добрый день
Подскажите есть таблица с колонками Месяц и Продавец. Надо найти кол-во строк в которых присутствует Месяц И (продавец1 ИЛИ продавец2)
Делаю по отдельности каждый этап и суммирую вручную - получается. Заключаю все в масив и считает неправильно. Подскажите в чем причина

PS читаю Уокенбаха - там есть рабочий вариант без ИЛИ но интересует именно почему в таком виде неправильно считает
Изменено: AlejandroIvanov - 20.02.2019 12:41:51
 
В формулах массива ИЛИ такое - +. Применяется и ИЛИ, но не при получении массива.
=СУММ(((SalesRep="снежко")+(SalesRep="услонцев"))*(Month="январь"))
Обычной формулой:
=СУММ(СЧЁТЕСЛИМН(SalesRep;{"снежко";"услонцев"};Month;"январь"))
 
по тому что ИЛИ вернет единственный ответ проанализировав сразу весь диапазон и он будет в вашем случае TRUE
Изменено: БМВ - 20.02.2019 12:47:13
По вопросам из тем форума, личку не читаю.
 
Спасибо за ответы но все равно не понятно почему так происходит.
Как я понял формула просто суммирует число строк с месяцем, но почему так происходит именно когда в массив заключаю

Код
=СУММ(ЕСЛИ(ИЛИ(SalesRep="снежко";SalesRep="услонцев")*(Month="январь");1))

Ведь ИЛИ в данной формуле сказано искать Продавцов а потом умножать на месяц

Пробовал сперва присвоить 1 а потом умножать на (Month="январь") и все равно не выходит
Может со скобками напутал или ИЛИ всегда в такой формуле так будет делать?
Изменено: AlejandroIvanov - 20.02.2019 13:25:21
 
Цитата
vikttur написал:
В формулах массива ИЛИ такое -  +.
Не понял вот эту фразу
 
Цитата
БМВ написал:
по тому что ИЛИ вернет единственный ответ проанализировав сразу весь диапазон и он будет в вашем случае TRUE
что непонятного?
По вопросам из тем форума, личку не читаю.
 
ИЛИ() (знак +)  - складываем условия. ЛОЖЬ+ИСТИНА = 1 (ИСТИНА)
И() (знак  *) - перемножаем условия. ЛОЖЬ*ИСТИНА = 0 (ЛОЖЬ)

ИЛИ(СТРОКА(1:3)=1) - результат: ИСТИНА, т.к. одно из трех условий истинно (СТРОКА(1:1)=1) - ИСТИНА+ЛОЖЬ+ЛОЖЬ
(СТРОКА(1:3)=1)- результат: массив {ИСТИНА:ЛОЖЬ:ЛОЖЬ}

В Вашем случае
ИЛИ(SalesRep="снежко";SalesRep="услонцев") = ИСТИНА
(SalesRep="снежко")+(SalesRep="услонцев") = {0:0:1:1:1:1:1:1}
 
AlejandroIvanov, в строке формул выделите ИЛИ(SalesRep="снежко";SalesRep="услонцев") и нажмите F9 - увидите есть там массив или нет.
 
Цитата
БМВ написал: что непонятного?
Понятно что ИЛИ дает TRUE непонятно почему так происходит. Но может глубоко копаю

vikttur , получается когда я пишу ИЛИ, функция берет весь диапазон (26 строчек в моем случае) и если находит хотя бы одно вхождение любого перечисленного элемента то это сразу TRUE для всего диапазона?

Цитата
V написал:  AlejandroIvanov , в строке формул выделите ИЛИ(SalesRep="снежко";SalesRep="услонцев") и нажмите F9 - увидите есть там массив или нет.
Да, спасибо, увидел
Изменено: AlejandroIvanov - 20.02.2019 13:49:45
 
Цитата
AlejandroIvanov написал:
функция берет весь диапазон (26 строчек в моем случае) и если находит хотя бы одно вхождение любого перечисленного элемента то это сразу TRUE для всего диапазона?
А что справка по этому повоу говорит?
Цитата
Возвращает значение ИСТИНА, если хотя бы один из аргументов имеет значение ИСТИНА или ЛОЖЬ, если все аргументы имеют значение ЛОЖЬ.
У Вас аргументы - все элементы массива
 
Цитата
vikttur написал: А что справка по этому повоу говорит?
Там так много страниц с машинным переводом что не рискую туда заглядывать, потому книгу читаю

Цитата
У Вас аргументы - все элементы массива
Почему то думал что будет разбивать массив на элементы и каждый сравнивать с условиями

Хорошо, спасибо за помощь. V, БМВ и вам тоже.
Изменено: AlejandroIvanov - 20.02.2019 13:55:18
 
Плохо, что со справкой не дружите.

Цитата
AlejandroIvanov написал: удет разбивать массив на элементы и каждый сравнивать с условиями
Именно это и происходит. Но для ИЛИ достаточно одного истинного условия, чтобы в результате показать ИСТИНА.
Страницы: 1
Наверх