Страницы: 1
RSS
Сравнение двух динамических диапазонов, бинарные операции над строками/столбцами матрицы
 
День добрый.
Немного многословно ниже, но тем не менее :)

В процессе решения одной задачки здесь на форуме столкнулся с тем, что необходимо сравнить на совпадение (или несовпадение) два диапазона, размерностью 1 столбец каждый, но с переменным количеством строк.
Предположим, первый диапазон "Даты" содержит некие даты, для которых проводится анализ, второй "Праздники" - список праздничных дней (хотя на самом деле это могут быть и не даты, а числа или текст).
В итоге я хочу получить формулу, результат которой - массив 0 и 1 (или ЛОЖЬ/ИСТИНА), для тех дат из первого диапазона, которые не попадают на праздничные дни. Предположим, эту формулу я потом засуну в СУММПРОИЗВ для подсчета по еще двум-трем критериям для того же исходного диапазона дат, либо использую ее результат для других целей.

Если мы будем сравнивать Даты<>ТРАНСП(Праздники), то получим такой массив с числом строк как в "Дата" и числом столбцов = числу строк в "Праздники" (например, 3).
Четвертый столбец - результат бинарного умножения предыдущих столбцов И(А1,А2,А3):
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ЛОЖЬИСТИНАИСТИНАЛОЖЬ
ИСТИНАЛОЖЬИСТИНАЛОЖЬ
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАЛОЖЬЛОЖЬ
ИСТИНАИСТИНАЛОЖЬЛОЖЬ
ИСТИНАИСТИНАЛОЖЬЛОЖЬ
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
ИСТИНАИСТИНАИСТИНАИСТИНА
Но как бинарно перемножить столбцы массива построчно? Напрямую никак не получается у меня схлопнуть массив до одного столбца бинарно.

В принципе, понятно, что можно использовать БДСУММ (если речь идет о суммировании, например). Но далеко не всегда нужна сумма, неудобное задание условий для отбора, массив нужно использовать не для суммирования, а для поиска номеров строк и т.п.

В итоге у меня родилась какая-то не очень красивая формула:
=(МУМНОЖ(1*(Даты<>ТРАНСП(Праздники));СТРОКА(Праздники)^0)=СЧЁТЗ(Праздники)

Можно ли сделать проще?
Изменено: Максим Зеленский - 06.08.2015 11:43:24
F1 творит чудеса
 
Эку Вы монстровую формулу придумали) А может так подойдет (массивная)?:
Код
=ЕНД(ПОИСКПОЗ($A$2:$A$22;$E$2:$E$4;))
 
:) так гораздо проще, спасибо!
И самое главное, хорошо забытое старое :):)
Изменено: Максим Зеленский - 06.08.2015 12:33:03
F1 творит чудеса
Страницы: 1
Наверх