Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2013, 13:26   #1
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию Помогите переделать формулу с неизвестным

Коллеги, если есть возможность - помогите пожалуйста преобразовать формулу в excel
Формула:


100=EXP(0*18)*(100*НОРМРАСП((LN(100/80)+0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА)-80*НОРМРАСП((LN(100/80)-0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА))

C2 это искомый X , т.е нужно найти C2:

С2= и....

Путём подбора параметра например, при С2=4 условие выполняется (т.е. =100). Также при подборе параметра проверял другие значения, например при =62 С2=0,37... и т.д.
Но всё-таки очень нужно преобразовать именно саму формулу.

Если для кого-нибудь это не составит очень большого труда - помогите пожалуйста, т.к. сам бьюсь с этим уже около месяца, но самому разложить всё это на пальцах знаний не хватает (
kaury вне форума Ответить с цитированием
Старый 27.09.2013, 15:02   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

минимальное значение, при котором
100=EXP(0*18)*(100*НОРМРАСП((LN(100/80)+0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА)-80*НОРМРАСП((LN(100/80)-0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА))
2.97798671921091
и функция равна 100 при любых других значениях больше 2.97798...

62 это будет равно при с2 = 0.37465792688208
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2013, 15:09   #3
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
минимальное значение, при котором
100=EXP(0*18)*(100*НОРМРАСП((LN(100/80)+0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА)-80*НОРМРАСП((LN(100/80)-0,5*(C2^2)*18)/(C2*КОРЕНЬ(18));0;1;ИСТИНА))
2.97798671921091
и функция равна 100 при любых других значениях больше 2.97798...

62 это будет равно при с2 = 0.37465792688208
IgorGO это то понятно . Важно не само значение, а именно формула. Если бы был необходим какой то результат, при X<2.977..... , то я даже не заморачивался бы и определил это подбором параметра, как я и описывал выше.
kaury вне форума Ответить с цитированием
Старый 27.09.2013, 15:34   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так я и пользуюсь Вашей формулой
Все что я исправил в Вашей формуле это два раза заменил 0,5 на 0.5 (у меня разделитель целой части числа от дробной точка, а не запятая)
21 при с2 = 0.0447645188836581
32 при с2 = 0.136790351196758
43 при с2 = 0.21858933956077
54 при с2 = 0.305245684627548
... и т.д
вообще с2 можно определить для любых значений функции от -80 до 100.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2013, 15:45   #5
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
так я и пользуюсь Вашей формулой
Все что я исправил в Вашей формуле это два раза заменил 0,5 на 0.5 (у меня разделитель целой части числа от дробной точка, а не запятая)
21 при с2 = 0.0447645188836581
32 при с2 = 0.136790351196758
43 при с2 = 0.21858933956077
54 при с2 = 0.305245684627548
... и т.д
вообще с2 можно определить для любых значений функции от -80 до 100.
Не совсем понял, Вы формулу переделали, или всё-таки использовали "подбор параметра" в excel?
Через подбор параметра я получаю те же значения, что и у Вас, но мне то нужна именно, так сказать, обратная формула, т.е. допустим:
0.305245684627548= .....
Т.е 54 это как раз известная величина, а вот 0.305245684627548 неизвестная (Х, или C1, как в формуле).
kaury вне форума Ответить с цитированием
Старый 27.09.2013, 16:18   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

подозреваю, что простой (и даже сложной) обратной формулы нет, это решается методом итераций. в екселе - с помощью "подбор параметра" или "поиск решения".
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.09.2013, 16:32   #7
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
подозреваю, что простой (и даже сложной) обратной формулы нет, это решается методом итераций. в екселе - с помощью "подбор параметра" или "поиск решения".
IgorGO спасибо!
Тогда ещё вопрос, а такую функцию excel как "подбор параметра" возможно сделать в виде макроса, причём таким образом, что бы поле функции "значение" автоматом извлекалось бы из какой-либо определенной ячейки, в которой оно периодически меняется? (Просто в штатной форме функции excel "подбор параметра" поле "значение" строго требует ввода числа и не позволяет делать даже ссылку на ячейку).
kaury вне форума Ответить с цитированием
Старый 27.09.2013, 16:55   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

да, это возможно, макрос (без заголовка и End Sub) состоит из 45 символов.
стартовать может автоматически, когда в "целевой ячейке" изменилось значение.
Код:
Sub FindAsB1()
  [c1].GoalSeek Goal:=[b1], ChangingCell:=[c2]
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.09.2013, 15:40   #9
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
да, это возможно, макрос (без заголовка и End Sub) состоит из 45 символов.
стартовать может автоматически, когда в "целевой ячейке" изменилось значение.
Код:
Sub FindAsB1()
  [c1].GoalSeek Goal:=[b1], ChangingCell:=[c2]
End Sub
IgorGO спасибо! Извиняюсь, что не отвечал долго, некоторое время ушло на тесты. В итоге почти то, что нужно!
Осталась только загвоздка - для автоматического реагирования на изменение значения в ячейке применил:

Private Sub Worksheet_Change(ByVal Target As Range)

Проблема оказалась в том, что когда я ручками меняю значение в ячейке - макрос прекрасно работает. Но в реальности, значения в эту ячейку периодически экспортируются из другого ПО (запущена выгрузка в книгу excel). Вот при таком авто-экспорте макрос отказывается реагировать на изменения, хотя на самом деле значения ячейки меняются. Может есть способ сделать так, чтобы макрос реагировал и на такие изменения?
kaury вне форума Ответить с цитированием
Старый 30.09.2013, 16:02   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Есть аж 3 разных способа:
1. Завязать на этот диапазон формулу и использовать событие пересчёта.
2. Завязать на эту ячейку текстбокс (или комбобокс, не помню) и использовать его события.
3. Было что-то умное, забыл... Но это должно быть тут: http://www.planetaexcel.ru/forum/ind...ID=8&TID=10022
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать формулу для Excel 2003 sanya14 Microsoft Office Excel 12 25.01.2012 13:47
Переделать формулу для Excel 2003 cassiopeya Microsoft Office Excel 4 27.09.2010 14:27
Нужно упростить, переделать формулу avtopark Microsoft Office Excel 3 06.02.2010 10:32
Как переделать формулу mik Microsoft Office Excel 1 27.10.2007 19:07