Страницы: 1
RSS
Уменьшить нагрузку на вычисления при применении функции И
 
Всем привет!
Понадобилось сократить нагрузку на расчеты в книге.
Хочу убрать перебор через И,В примере выглядит
Код
=И(СУММПРОИЗВ((B5=$F$3:$F$38)*($G$3:$G$38))<J2;СУММПРОИЗВ((B5=$F$3:$F$38)*($G$3:$G$38))>I2)
Думал, что то типа
Код
=I2<СУММПРОИЗВ((B4=$F$3:$F$38)*($G$3:$G$38))>J2
знаю, что так не работает, перебрал несколько вариантов, что в голову пришло - но в голове пусто :)
Может, кто что подскажет? Кроме ВБА.  
Изменено: Александр - 20.06.2019 21:21:01 (перезалил файл)
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Александр, как аналог функции И можно использовать знак *. Только в результате вернет 0 или 1.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Максим В., Вы имеете ввиду, между перебором? но тогда смысл, если 2 раза прогоняется СУММПРОИЗВ - сомнительное сокращение производительности , либо я вас не понял
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Александр, Вы меня правильно поняли. А вместо СУММПРОИЗВ попробуйте СУММЕСЛИ. Думаю она пошутрее будет.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Максим В. написал:
попробуйте СУММЕСЛИ. Думаю она пошутрее будет.
В моем случае - СЧЕТЕСЛИМН
а действительно, шустрее или нет? Если на мой вопрос ответа не будет, хоть этим воспользуюсь советом...
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Можно использовать формулу:
Код
=ABS(СУММПРОИЗВ((B4=$F$3:$F$38)*$G$3:$G$38)*2-J2-I2)<J2-I2
Только с граничными значениями надо уточнить. Когда равно.
 
Светлый, занимательная математика :) спасибо, вариант, вроде как, рабочий.  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Можно еще ГПРом прогнать, но для этого нужно чтобы ячейка H2 была пустой:
Код
=ГПР( СУММПРОИЗВ((B4=$F$3:$F$38)*$G$3:$G$38)*2-J2-I2); H2:J2; 1 ) = I2

Но тут с равенством будут заморочки. Нет, вариант Светлого точнее будет.
Изменено: PooHkrd - 20.06.2019 17:27:26
Вот горшок пустой, он предмет простой...
 
Или, как подсказал Максим В., :
Код
=ABS(СУММЕСЛИ($F$3:$F$38;B4;$G$3:$G$38)*2-J2-I2)<J2-I2
 
 
И никто не предложил разгрузить саму функцию:
СУММПРОИЗВ(--(B4=$F$3:$F$38);$G$3:$G$38)
Вычисления с И тоже ускоряется обрезанием лишнего (ЕСЛИ  поможет):
=ЕСЛИ(СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38)<J2;СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38)>I2);)
Вариант, вряд ли легче и нижнюю границу нужно сдвигать на 1:
=ПОИСКПОЗ(1;ЧАСТОТА(СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38);$I$2:$J$2);)=2
А это может помочь. При попадании в диапазон формула покажет результат вычисления СУММПРОИЗВ, иначе - одну из границ:
=МЕДИАНА(СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38);$I$2;$J$2)

По поводу СЧЕТЕСЛИМН - проверьте сами на достаточно большом проверочном диапазоне. Возможно, будете удивлены )
 
Столько вариантов Оо :) большое всем спасибо.
По порядку.
Вариант от Светлый, рабочий и интересный.
PooHkrd, что то н/д выдает, не стал разбираться. ГПР меня смущает в плане требования пустой ячейки.
vikttur, А чем двойное отрицание разгружает первоначальную функцию?
vikttur написал:
Цитата
=ПОИСКПОЗ(1;ЧАСТОТА(СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38);$I$2:$J$2);)=2
Заинтересовала фун-ия ЧАСТОТА - не приходилось ей пользоваться, прочитал справку и вроде все понятно. Кроме, как это объяснить? (скрин)
Если читаем справку, то "Вычисляет частоту возникновения значений в диапазоне значений " - т.е. число попаданий. А тут массив из 3х значений. Я запутался :)
Цитата
vikttur написал:
=МЕДИАНА(СУММПРОИЗВ(--(B5=$F$3:$F$38);$G$3:$G$38);$I$2;$J$2)
В моем случае результат нужен ИСТИНА или ЛОЖЬ, а ее нужно будет тогда усложнить.

И из всего предложенного, вариант Светлый, мне нравится больше всего :) И при равенстве не проблема, "<=" рабочий вариант
Изменено: Александр - 21.06.2019 10:12:38
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
Страницы: 1
Наверх