EXEL. Возврат ближайшего большего или меньшего числа.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > EXEL. Возврат ближайшего большего или меньшего числа.

EXEL. Возврат ближайшего большего или меньшего числа.

Ответ
Поиск в этой теме
Непрочитано 03.09.2009, 19:39 #1
EXEL. Возврат ближайшего большего или меньшего числа.
Layout
 
Конструктор
 
Москва
Регистрация: 11.05.2008
Сообщений: 66

Коллеги! Подскажите с помощь какого оператора в EXEL можно выбрать из ряда чисел ближайшее большее или ближайшее меньшее к заданному числу. Данную задачу я решаю, но алгоритм решения довольно трудоемок. Чуствую, что есть более простое решение (уже готовый оператор), но не могу его найти - в интренете об этом мало что сказано и экселевская справка тоже мало что говорит.
Надеюсь на помощь!!!!
Просмотров: 10288
 
Непрочитано 08.02.2012, 09:45
#2
sdanilov


 
Регистрация: 08.02.2012
Сообщений: 5


Ув. Layout, скажите, не нашли ответа на решение своей проблемы? а то меня тоже очень интересует этот вопрос. И если нет - не могли бы вы мне переслать метод ваш сложный решения озвученной проблемы... Оч надо!

Сразу приклавдываю ссылку.. тоолько что нашел - может быть поможет? http://www.planetaexcel.ru/forum.php?thread_id=9833
sdanilov вне форума  
 
Непрочитано 08.02.2012, 17:49
#3
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Для ближайшего большего такой, например, вариант
Код:
[Выделить все]
Function nearmax(Число As Long, диапазон As Range)
Dim k, rez As Long
rez = 10000000
For Each i In диапазон
k = i.Value - Число
If k > 0 And i.Value < rez Then rez = i.Value
Next i
nearmax = rez
End Function
Для меньшего:
Код:
[Выделить все]
Function nearmin(Число As Long, диапазон As Range)
Dim k, rez As Long
rez = -10000000
For Each i In диапазон
k = i.Value - Число
If k < 0 And i.Value > rez Then rez = i.Value
Next i
nearmax = rez
End Function
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 08.02.2012, 17:53
#4
sdanilov


 
Регистрация: 08.02.2012
Сообщений: 5


мдаааа. это как-то круто...
sdanilov вне форума  
 
Непрочитано 08.02.2012, 17:55
#5
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Куда уж как круто, нажимай alt+F11, создавай модуль, вставляй и пользуйся (функция появится в разделе "определённые пользователем")
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 08.02.2012, 17:58
#6
sdanilov


 
Регистрация: 08.02.2012
Сообщений: 5


да я уже для частного случая (моего) проблему решил. Правда это только для ряда с возрастающими числами. Но мне сгодится. А за информацию спасибо - обязательно себе сохраню. Подобная функция нужна постоянно. Даже не понятно, почему MS не вывел ее в разряд стандартных...
sdanilov вне форума  
 
Непрочитано 09.02.2012, 09:51
#7
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Поправил маленько функции, для ближайшего большего:
Код:
[Выделить все]
Function nearmax(Число As Double, диапазон As Range)
Dim k, rez As Double
For Each i In диапазон
k = i.Value
If rez < k Or rez = Empty Then rez = k
Next i
For Each i In диапазон
If i.Value > Число And i.Value < rez Then rez = i.Value
Next i
If rez < =Число Then rez = Error(1)
nearmax = rez
End Function
Для ближайшего меньшего:
Код:
[Выделить все]
Function nearmin(Число As Double, диапазон As Range)
Dim k, rez As Double
For Each i In диапазон
k = i.Value
If rez > k Or rez = Empty Then rez = k
Next i
For Each i In диапазон
If i.Value < Число And i.Value > rez Then rez = i.Value
Next i
If rez >= Число Then rez = Error(1)
nearmin = rez
End Function
Плюс к тому сделал надстройку, загрузи её в excel и функции будут доступны постоянно
Вложения
Тип файла: rar Ближайшие.rar (7.6 Кб, 178 просмотров)
__________________
Нерешаемых проблем не бывает.

Последний раз редактировалось KronSerg, 09.02.2012 в 10:19.
KronSerg вне форума  
 
Непрочитано 09.02.2012, 11:24
#8
sdanilov


 
Регистрация: 08.02.2012
Сообщений: 5


спасибо
sdanilov вне форума  
 
Непрочитано 16.02.2012, 17:16
#9
Scorpio_1986

инженер-проектировщик
 
Регистрация: 13.05.2009
Сообщений: 24


Есть встроенные функции: ОКРУГЛВНИЗ и ОКРУГЛВВЕРХ. Надо справку смотреть чем велосипед изобретать!
Scorpio_1986 вне форума  
 
Непрочитано 16.02.2012, 17:50
#10
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Scorpio_1986, ты не понял, допустим есть ряд чисел 3, 56, 18, 125, -10, 10000
Так вот, функция должна находить ближайшие большее из списка, например
Число 1 ответ 3
Число -9 ответ 3
Число -125 ответ -10
Число 20 ответ 56
Число 200 ответ 10000
Понял свою ошибку?
Offtop: Судя по количесву скачиваний надстройки не так уж и востребована функция
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 16.02.2012, 22:50
1 | #11
tehkonst


 
Регистрация: 25.10.2011
Сообщений: 132


для отсортированных чисел так решается:
ИНДЕКС(столбец с числами, ПОИСКПОЗ(число; столбец с числами)+1, 1)
tehkonst вне форума  
 
Непрочитано 17.02.2012, 13:04
#12
Дрюха

Инженер-конструктор
 
Регистрация: 20.07.2007
Москва
Сообщений: 2,936


Цитата:
Сообщение от tehkonst Посмотреть сообщение
для отсортированных чисел так решается:
ИНДЕКС(столбец с числами, ПОИСКПОЗ(число; столбец с числами)+1, 1)
А если число равно одному из ряда чисел, то как сделать, чтобы функция останавливалась и на этом совпадающем числе?
Дрюха вне форума  
 
Непрочитано 17.02.2012, 13:20
#13
tehkonst


 
Регистрация: 25.10.2011
Сообщений: 132


Можно проверку дополнительно сделать. Или проще от числа сотую отнять (если шаг больше 0.01).
ИНДЕКС(столбец с числами, ПОИСКПОЗ(число-0,01; столбец с числами)+1, 1)
tehkonst вне форума  
 
Непрочитано 17.02.2012, 14:16
#14
Дрюха

Инженер-конструктор
 
Регистрация: 20.07.2007
Москва
Сообщений: 2,936


Цитата:
Сообщение от tehkonst Посмотреть сообщение
Можно проверку дополнительно сделать. Или проще от числа сотую отнять (если шаг больше 0.01).
ИНДЕКС(столбец с числами, ПОИСКПОЗ(число-0,01; столбец с числами)+1, 1)
Спасибо
Дрюха вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > EXEL. Возврат ближайшего большего или меньшего числа.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Google SketсhUp в помощь архитекторам. Как и где приобрести программу? Igla Прочее. Программное обеспечение 14 03.07.2009 17:02
NanoСПДС gest Другие CAD системы 401 15.07.2008 14:50
ответственность за проектную документацию zaza-noza Организация проектирования и оформление документации 3 07.03.2008 09:54