Страницы: 1
RSS
операции объединения, разницы и т.п. над массивами, получаемыми формулами
 
Всем Ку.

Две формулы возвращают массивы. Предположим, СТРОКА(A1:A5) и СТРОКА(A4:A7) (на самом деле могут быть другие, например, ЧАСТОТА или МОДА.НСК)
то есть имеем {1;2;3;4;5} и {4;5;6;7}

Как из них получить формулами же:
1) пересечение {4;5}
2) объединение {1;2;3;4;5;6;7}
3) сложение (или как оно там называется) {1;2;3;4;5;4;5;6;7}
4) только различающиеся {1;2;3;6;7}
5) отличие левого от правого {1;2;3} или наоборот {6;7}
??
наверное тут надо подключать МУМНОЖи разные и т.п. но я совсем потерялся и голову поломал.
п.5 самый актуальный
Изменено: Максим Зеленский - 05.04.2017 20:02:42 (напутал с названиями)
F1 творит чудеса
 
Мне как-то нужно было тоже что-то формульно-головололмное или даже невозможное получить. Плюнул, реализовал UDF и был счастлив.
Только с размерностями возвращаемых массивов надо поаккуратнее...
Но и это оказалось преодолимо...

Может, вариант?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
UDF не проблема, конечно... просто хотелось ронять,  можно ли формулой.
F1 творит чудеса
 
1) =НАИМЕНЬШИЙ(ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(СТРОКА(A1:A5);СТРОКА(A4:A7);0));СТРОКА(A1:A5));СТРОКА(A1:ИНДЕКС(A1:A10;СЧЁТ(ПОИСКПОЗ(СТРОКА(A1:A5);СТРОКА(A4:A7);0)))))
2) =СТРОКА(ДВССЫЛ(МИН(СТРОКА(A4:A7);СТРОКА(B1:B5))&":"&МАКС(СТРОКА(A4:A7);СТРОКА(B1:B5))))
3) Этот вариант меня больше заинтересовал. Что-то текстовое тут нужно..
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир,
Спасибо за варианты!
2-й вариант, я так понимаю, работает только для последовательных массивов? То есть с массивом типа {1;5;6} + {3;4;5} мы не получим {1;3;4;5;6}
Но это уже больше чем ничего
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
олько для последовательных массивов
А об этом я не знал.
Ну если третий вариант решим, то через наименьший получим  {1;3;4;5;6} .
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Для первого варианта - пересечение неровных массивов,

вот такая формула (главное учесть размерность/направление массива {1:1} или {1;1})

=МОДА.НСК(ЕСЛИОШИБКА(ПОИСКПОЗ({3;6;8};СТРОКА(1:7);0)*{1:1};""))

результат {3:6}

перебор, всё проще:
=МОДА.НСК({1;2;3;4;5};{2;5;7})
результат {2;5}
Изменено: Максим Зеленский - 06.04.2017 13:04:53
F1 творит чудеса
 
Пункт 5:

Left Anti Join:
=МОДА.НСК(ЕСЛИОШИБКА(ЕСЛИ(ЕНД(ПОИСКПОЗ({1;3;5;7};{2;3;4};0));{1;3;5;7};"")*{1:1};""))
результат:
{1:5:7}

Общий вид:
=МОДА.НСК(ЕСЛИОШИБКА(ЕСЛИ(ЕНД(ПОИСКПОЗ(Array1;Array2;0));Array1;"")*{1:1};""))

Right Anti Join:
=МОДА.НСК(ЕСЛИОШИБКА(ЕСЛИ(ЕНД(ПОИСКПОЗ({1;3;5;7};{2;3;4};0));{2;3;4};"")*{1:1};""))
результат:
{2:4}

Общий вид:
=МОДА.НСК(ЕСЛИОШИБКА(ЕСЛИ(ЕНД(ПОИСКПОЗ(Array1;Array2;0));Array2;"")*{1:1};""))
F1 творит чудеса
 
У меня для первого условия такой вариант:
=ИНДЕКС({5:6:8:9:11};Ч(ИНДЕКС(СТРОКА(A1:ИНДЕКС(A1:A10;СЧЁТ(ПОИСКПОЗ({3:5:6:7};{5:6:8:9:11};))));)))

v.2007
----------
Думаю над таблица под таблицу:
{3:5:6:7;5:6:8:9:11}
Изменено: Владимир - 06.04.2017 14:10:41
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Наверх