К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как в Екселе реализовать такой алгоритм?

Гость
0 - 26.05.2017 - 11:56
Есть стандартный ряд чисел, например: 367, 439, 517, 613, 721, 823, 931 и т.д.
В результате расчета получилась величина, например 759. Ексель должен выбрать ближайшее большее из стандартного ряда. В данном случае 823. Подскажите, плиз!



1 - 27.05.2017 - 06:38
Таблица
x y
1 367
2 439
3 517
4 613
5 721
6 823
7 931

Уравнение линейной регрессии имеет вид
у=95*х+ 250
Спускаем вниз на 20 пунктов нашу прямую, чтобы все заданные известные точки оказались выше расчетных, и потом при вычислениях округляем вверх.
у = 95*х +230 --> вычисляем х и округляем вверх до целого.
х=(у-230)/95
Нашли ближайшее значение Х, теперь сравниваем У(х) с У_табличным(х). Если У_табл меньше тогда спускаемся Х=х-1.
Х- порядковый номер в заданном ряду значений У.

Можно написать макрос, а можно и в ячейке формулу составить по условию.
Еще надо по диапазону ограничение на Мин, чтобы не выскочить.
В данном примере Х не может быть больше 7.

2 - 27.05.2017 - 07:09
Цитата:
Сообщение от vovan Посмотреть сообщение
Если У_табл меньше тогда спускаемся Х=х-1
Вернее наоборот. В Ехеле(1) видно, когда находим Х для (У=У-1) во всех случаях рассчитанный Х надо убавить на 1.
Надеюсь, понятно
3 - 27.05.2017 - 07:23
Цитата:
Сообщение от vovan Посмотреть сообщение
получилась величина, например 759
Проверка:
х=(759-230)/95 = 5,57 Округляем вверх х = 6
У(6) = 823
4 - 27.05.2017 - 07:40
Еще проверяем Округление вниз до целого, чтобы не перескочить ближайшую заданную точку.
Х = целое(5.57)=5
У(5) = 721
Сравниваем
Если У(5) > 759 тогда округлвверх(Х) убавляем х=х-1
5 - 27.05.2017 - 07:49
Или лучше сначала проверить округление вниз до целого, а затем добавить 1, если табличное значение окажется меньше.
6 - 27.05.2017 - 08:17
Подумал, лучше вообще не округлять вверх. Сразу проверить округление вниз до целого. Если табличное значение окажется меньше, добавляем х = цел(х)+1
Пример, вычислим ближайший больший У_табл для у= 437:
х=(437-230)/95 = 2,18
х=цел(2,18) = 2
У_табл(2) = 439
х= ?(У_табл >у , х, х+1); //это на 1С, в Ехель - Если()
439 > 437 х=2


К списку вопросов






Copyright ©, Все права защищены