Страницы: 1
RSS
Выбрать из предложенного диапазона ближайшее число к заданному числу.
 
Доброго времени!)  
Помогите, пожалуйста, решить вопрос.    
Задан диапазон чисел a1:e1, например, 10 20 30 40 50. Из предложенных чисел необходимо выбрать ближайшее число к (например)G1=37. И если (например, в данном случае) число не 37 а 35, то было бы выбрано любое, из двух подходящих (30 или 40).    
Было бы великолепно, конечно, если возможно, чтоб решение укладывалось в одну формулу. Заранее спасибо, за внимание и помощь)
 
=ИНДЕКС(A1:E1,ПОИСКПОЗ(МИН(ABS(G1-A1:E1)),ABS(G1-A1:E1),0))  
массив, ввод через ctrl+shift+enter
 
=ИНДЕКС(A1:E1;ПОИСКПОЗ(37;A1:E1;1))  
Вместо "37" можно ссылку на ячейку.  
Ошибка, если выбираемое меньше минимального в диапазоне.
 
))))))) Огромное спасибо) Два дня думал) Большое спасибо))))
 
Тема закрыта))))))))
 
массивная:  
=ПРОСМОТР(2;1/(ABS(G1-A1:E1)=МИН(ABS(G1-A1:E1)));A1:E1)  
 
отличие от индекс(поискпоз) - выберет последнее подходящее число из списка если подходит более чем одно
 
=ПРОСМОТР(2;1/(ABS(G1-A1:E1)=МИН(ABS(G1-A1:E1)));A1:E1)  
Ошибку в вычислении выдает --> МИН(ABS(G1-A1:E1)
 
а нет, всё хорошо) разобрался)фигурные скобки забыл поставить0)
 
Помогите, пожалуйста, еще... Если не сложно_)  
Имеется таблица, необходимо, выбрать наиболее близкое к значению П из таблицы число и занести его в ячейку F19, при этом должны заносится "b" (высота) и "a" (ширина) в соответствующие ячейки F22 и F21, выбранного значения F19.  
Например, если значение С19=30,6 то необходимо занести в F19 значение 30,7 а в ячейки F21 и F22, соответственно, занести 2,5 и 12,5.  
...ммм.... Это возможно?)  
Заранее спасибо, большое)))))
 
так?
 
)))))))Спасибо огромное)) Никогда бы не додумался, как это сделать) Большое спасибо))))))) Просто асы) Спасибо)))))))))
 
Пожалуйста, помогите решить ещё такую задачку:  
 
В представленной таблице в столбце А нужно найти строку с числом, ближайшим к указанному в ячейке F15, затем в этой строке найти число, ближайшее к указанному в F16. И в F17, как итог, вывести заголовок столбца, содержащего найденное число.  
 
Вроде бы даже понимаю, как это сделать (через модуль результата вычитания чисел массива из заданного числа), но как ни пытался всё это одной формулой реализовать - мозги вскипают. :D
 
Видимо, такое действительно трудно реализовать. :(
 
А Вы условия нормально пишите, тогда не трудно будет.  
8 ближе к 7-и или к 9-и?
 
Извините, недоглядел. Числа заполнял случайным образом и не учёл такой нюанс. Вот исправленный файл. В нём 8.6 (F15) ближе к 9, это 6 строка. В этой строке 430 ближе всего к 432.1 (F16), значит искомый столбец K. Он называется juliet, что и нужно отобразить в ячейке F17.
 
Знакомый файл :)  
Почему не продолжаете в старой теме?
 
Наверное можно было и там продолжать. Просто искал поиском нахождение ближайшего значения, вышла эта тема. :)
 
Ясно, эта ближе, там другой вопрос.  
 
Строка 8,6, число 65. Ну, оператор пьяный :)  
Что делать формуле?  
Я к чему? Может быть, не смотреть на проделки выпившего за клавиатурой, достаточно искать число?
 
Ближайшее будет 112 из столбца E, вывести delta.
 
Ясно, нам нипочем невнимательные операторы :)  
 
Еще уточнение - обязательно ближайшее число к 8,6? Не ближайшее меньшее или ближайшее большее, а именно то, которое ближе (с любой стороны)?  
 
Если ближайшее меньшее:  
=ИНДЕКС(B1:M1;ПОИСКПОЗ(МИН(ABS(ИНДЕКС(B2:M13;ПОИСКПОЗ(F15;A2:A13);)-F16));ABS(ИНДЕКС(B2:M13;ПОИСКПОЗ(F15;A2:A13);)-F16);))Формула массива.  
 
Как вводить формулу массива:  
После введения формулы в ячейку, ввод завершается нажатием не просто Enter, а Ctrl+Shift+Enter. Формула при этом будет заключена в фигурные скобки - {}.
 
Еслиб просто число искать по таблице, это я бы осилил добавив алгоритм из этой темы в формулу, которую вы мне в прошлый раз подсказали. Но дело всё немножко сложнее. Сейчас в файле случайные числа, а в рабочем документе будет сертифицированная таблица довольно больших размеров и там столбец А обозначает число оборотов, которому по горизонтали в каждом столбце будет соответствовать какое-то стандартное значение. Вся проблема вытекает из того, что значения для ячеек F15 и F16 будут получаться из других вычислений, в которых часто набегает погрешность. Получится там 8.6 циклов оборота двигателя, и как быть? Нужно искать ближайшее целое значение из таблицы. Для 8.6 оборота ГОСТ значений не приводит))
 
Ближайшее с любой стороны. Его, похоже, найти можно последовательно вычитая из искомого числа элементы массива и затем найти наименьшее значение из их модулей.  
 
P.S. Что-то Ваша формула не правильно работает.
 
Предыдущая формула работает правильно, но, как замечено, для 8,6 ищет 7.  
 
Чтобы не "утолщать" формулу - в доп. столбец:  
=ABS(A2-$F$15)  
 
Для результата - формула массива:  
=ИНДЕКС(B1:M1;ПОИСКПОЗ(МИН(ABS(ИНДЕКС(B2:M13;ПОИСКПОЗ(МИН(N2:N13);N2:N13;);)-F16));ABS(ИНДЕКС(B2:M13;ПОИСКПОЗ(МИН(N2:N13);N2:N13;);)-F16);))  
 
В файле еще более упрощенный вариант.
 
О, ещё раз спасибо вам! Проверил, работает. :D Сейчас буду разбираться, как оно всё устроено.  
 
Чем безмассивный вариант лучше, чем с массивами? Подозреваю, что масштабируется легче. Или ещё какие-то подводные камни бывают?
 
В простых формулах легче разбираться :)  
 
Формулы массива производят вычисления над диапазонами данных, поэтому тяжелы в расчетах. На больших таблицах, где таких формул много, лучше доп. вычисления.  
Что в Вашем варианте лучше? Всего одна формула массива или доп. строка плюс доп. столбец? Не знаю, скорости не замерял.
 
Добрый вечер форумчане  
Столько изучил про VBA, что забыл про Эксель  
Как можно прописать решение на вопрос, указанный в приложении.  
А проще определение номера строки ячейки из массива, удовлетворяющей условию.  
А то я "гляжу в кнгу, вижу фигу" :)  
Спасибо!
 
Чтобы получить 1, не обязательно строки делить, достаточно этой формулы массива:  
 
=МАКС(--(B2:B6=E4)*(C2:C6=E7))  
 
 
---------  
67867
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
=МАКС(--(B2:B6=E4)*(C2:C6=E7))  
 
Владимир, Спасибо большое!
 
Большая любовь к формулам массива :)  
 
Да проще:  
=--(ВПР(E4;B2:C6;2;0)=E7)  
 
Можно ЕСЛИ() добавить для обхода ошибки:  
=ЕСЛИ(СЧЁТЕСЛИ(B2:B6;E4);--(ВПР(E4;B2:C6;2;0)=E7);"этот без допуска!")
Страницы: 1
Читают тему
Наверх