Страницы: 1
RSS
Минимальное значение > 0 отдельных ячеек одной строки
 
Возможна ли формула меньше 110 знаков (с учетом "=")?
Задача проста: на прерывном диапазоне (разрывы могут быть произвольные, количество параметров фиксировано - 5 столбцов выделены цветом) найти минимальное значение, которое не равно нулю.
Файл-пример прилагаю.
В избушку не стал выкладывать по причине кажущейся "обычности" задачи.
Изменено: bedvit - 26.06.2019 01:03:11
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, блин вы такие вещи мутите тут на сайте в темах что даже боязно предлагать решение а вдруг подвох?

Как вариант создать строку с метками нужных столбцов потом мин + если
Лень двигатель прогресса, доказано!!!
 
Какой критерий "нужности" столбцов? Минимальные находить построчно?
 
vikttur,  я так понял это как то определяется но я пока не знаю тем более я с елефона
Лень двигатель прогресса, доказано!!!
 
Да нет никакого подвоха. Сегодня коллега подошёл с этим вопросом. Я накидал по-быстрому и подумал, что много проще можно. Уже отвык писать формулами :) Решил вот на форум вопрос забросить.
По задаче, нужно выбрать минимальное значение из пяти столбцов (построчно). В последней строке стоит ответ 2. Нужно проставить формулу в других строках. Я хотел в избушку закинуть, поэтому свою формулу стер, поставил знаки вопроса.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Сергей написал: я с елефона
Оно и понятно - связь еле-еле :)
 
Цитата
Сергей написал:
bedvit , блин вы такие вещи мутите тут на сайте в темах что даже боязно предлагать решение а вдруг подвох?
Сергей, так это на С++, С# любую программу замутить или dll cобрать или разобрать :) А здесь формула! ;)
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
vikttur написал:
Какой критерий "нужности" столбцов? Минимальные находить построчно?
Виктор, цвет (их всего 5). Да, построчно. Т.е. в формуле 5 переменных (ячеек).
Ладно не буду мучить, вопрос у меня больше к тому, что обрабатывается не массив,а дискретные ячейки, как их обработать скопом на неравенство нулю я быстро не сообразил (грешен, признаюсь).
Изменено: bedvit - 25.06.2019 20:48:56
«Бритва Оккама» или «Принцип Калашникова»?
 
Мин(если({101010010001};если(диапазон>0;диапазон)))
Лень двигатель прогресса, доказано!!!
 
Цитата
[Критерий] цвет
Формулы какого офиса цвет видят? В 10 не видят.
 
Цитата
vikttur написал: Формулы какого офиса цвет видят?
Вить, там все проще. Цвет нужен только для того, что бы правильно ссылку поставить на ячейку.

Цитата
Сергей написал: Мин(если({101010010001};если(диапазон>0;диапазон)))
Сергей, так можно только с неразрывным диапазоном.

Меня несколько напряг момент, что я сразу не смог сообразить как массивом обработать критерий <>0.
И эффективно сократить данную формулу.

Вот, выкладываю свой вариант.
«Бритва Оккама» или «Принцип Калашникова»?
 
А я-то думал, действительно цвет... )

Цитата
bedvit написал: так можно только с неразрывным диапазоном.
В примере неразрывный диапазон в строке, но между нужными столбцам разрывы. Формула должна работать как формула массива. В масиве констант условии единицами указаны нужные столбцы

Немассивно:
=МИН(ЕСЛИ(ИНДЕКС(A1:L1;Ч(ИНДЕКС({1;3;5;8;12};)))>0;ИНДЕКС(A1:L1;Ч(ИНДЕКС({1;3;5;8;12};)))))
=НАИБОЛЬШИЙ(ИНДЕКС(A1:L1;Ч(ИНДЕКС({1;3;5;8;12};)));СЧЁТ(1/ИНДЕКС(A1:L1;Ч(ИНДЕКС({1;3;5;8;12};)))))

То же, летуче:
=МИН(ЕСЛИ(Ч(СМЕЩ(A1;;{0;2;4;7;11}))>0;Ч(СМЕЩ(A1;;{0;2;4;7;11}))))
=НАИБОЛЬШИЙ(Ч(СМЕЩ(A1;;{0;2;4;7;11}));СЧЁТ(1/Ч(СМЕЩ(A1;;{0;2;4;7;11}))))
 
Вариант Сергея проходит с малюсенькой правкой:
Код
=МИН(ЕСЛИ({1;0;1;0;1;0;0;1;0;0;0;1};ЕСЛИ(A8:L8>0;A8:L8)))

формула массива

Мое уважение!!!
Изменено: PerfectVam - 25.06.2019 22:22:07
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Вот для чего и нужен форум. Варианты, явно лучше моего. По размеру PerfectVam, выигрывает. Правда все же массивная формула, для неискушённого пользователя - риск сломать. Ну и еще столбцы новые не вставишь, старые не удалишь, если идти через массив. Но в условии этого не было, просто отступление, для сравнения вариантов.
Всех Благодарю!
«Бритва Оккама» или «Принцип Калашникова»?
 
PerfectVam, не нужно ломать двоичное число :)
=МИН(ЕСЛИ({101010010001};ЕСЛИ(A1:L1>0;A1:L1)))
Ерунду написал. Так не работает.
 
bedvit, Честно сижу теоретически в отпуске без экселя тока логические предположения под конякой
PerfectVam, спасибо это и была моя идея просто на телефоне долго ставить точки с запятой
Изменено: Сергей - 25.06.2019 23:08:58
Лень двигатель прогресса, доказано!!!
 
Да с разделителем заходит. Формула от Сергея в обработке PerfectVam, на данный момент самая короткая. Но массивная. От Виктора есть не массивные, длиннее победителя, но короче моей. Все они через массив, поэтому чувствительны к вставке/удалению столбцов. Мая самая примитивная и длинная вышла. Зато сломать сложнее) Впрочем это не удивительно, чем сложнее программа, тем легче сломать.
«Бритва Оккама» или «Принцип Калашникова»?
 
Немассивна, некритична к изменению количества промежуточных столбцов:
=НАИБОЛЬШИЙ((A1;C1;E1;H1;L1);СЧЁТ(1/ИНДЕКС((A1;C1;E1;H1;L1);;;Ч(ИНДЕКС({1;2;3;4;5};)))))

И еще одна нашлась:
=НАИМЕНЬШИЙ((A1;C1;E1;H1;K1);ЧАСТОТА((A1;C1;E1;H1;K1);0)+1)
Здесь небольшая хитрость.
ЧАСТОТА((A1;C1;E1;H1;K1);0) - массив из двух значений: количество нулей и положительных чисел
Результат работы целой формулы - два наименьших значения  >0, в ячейке отображается меньшее. Но такая "хитрость" может боком вылезти при использовании результата для дальнейших вычислений.
Полностью корректная (с получением первого значения массива):
=НАИМЕНЬШИЙ((A1;C1;E1;H1;K1);ИНДЕКС(ЧАСТОТА((A1;C1;E1;H1;K1);0);1)+1)
69 знаков

Надо было в Избушке размещать )
 
Виктор, большая работа проделана! Всем здесь участвующим спасибо! В избушке не стал размещать по причине простоты задачи, вроде как не разбавлять серьезные решения. А вышло вон сколько вариантов, как в избушке )
Буду тестировать.
Изменено: bedvit - 26.06.2019 09:20:57
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх