Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 29
1

Функция на подбор параметра

22.06.2015, 15:20. Показов 3331. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть три ячейки: параметр, функционал, зависящий от параметра, и значение. Необходимо написать пользовательскую функцию, аргументами которой являются эти 3 ячейки. Функция должна возвращать значение параметра, при котором функционал достигает значения. При этом сам параметр не изменяется. Я написала так:
Visual Basic
1
2
3
4
5
6
7
Function goal(par As Range, func As Range, val As Double) As Variant
Dim param As Range
Set param = par
a = func.GoalSeek(val, par.Cells(1, 1))
goal = par.Cells(1, 1).value
Set par = param
End Function
Но не работает. Не понимаю, как работать с Range и как вызывать функцию.
Плиз, хелп!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2015, 15:20
Ответы с готовыми решениями:

Сделать цикл функции "Подбор параметра" на большое количество строк
Здравствуйте. У меня в excel на работе есть необходимость решить задачу с помощью функции...

Функция, которая получает два параметра и возвращает результат деления первого параметра на второй
Тут такая задача: написать функцию, которая получает два параметра тип unsigned short int и...

Подбор параметра
Помогите сделать подбор параметра

Подбор параметра
Даны длины сторон треугольника b , c ( b=4 , c=5 ) и величина радиуса описанной окружности R=3. С...

6
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
22.06.2015, 15:56 2
Если честно, я не особо понял, что у вас не работает.

Цитата Сообщение от iana Посмотреть сообщение
и как вызывать функцию
в тебе макроса пишете

Visual Basic
1
   goal(переменная Range, переменная Range, переменная Double)
Цитата Сообщение от iana Посмотреть сообщение
При этом сам параметр не изменяется
Visual Basic
1
   Function goal(ByVal par As Range, func As Range, val As Double) As Variant
И третье - я бы посоветовал почитать справку.
1
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 29
22.06.2015, 16:12  [ТС] 3
Цитата Сообщение от сороконожка Посмотреть сообщение
Если честно, я не особо понял, что у вас не работает.
Я пишу =goal(A2;B1;B2) и возвращается #ЗНАЧ!.
Цитата Сообщение от сороконожка Посмотреть сообщение
в тебе макроса пишете
Макросы не смогут работать, т.к. нужные ячейки на разных страницах, разных столбцах и строках. Чтобы это все сделать менее ручным и нужна функция.
Идея в том, что мне нужно в определенной ячейке написать =goal (ячейка1; ячейка2; ячейка3) и в ней появится значение параметра, который при подстановке в функционал, приведет его к нужному значению. При этом сам параметр и значение функционала остаются неизменными. Например, есть цена и выручка. Эти значения настоящие и показывают картину сейчас. Мы хотим найти значение цены, при которой выручка будет, например 1000. И это значение должно быть в другой ячейке, на другом листе, т.к. показывает параметр не сейчас, а какой он мог бы быть. У меня кажется объяснялка сломалась))

Добавлено через 3 минуты
Переписала так:
Visual Basic
1
2
3
4
5
6
7
Function goal(ByVal par As Range, func As Range, ByVal val As Double) As Variant
Dim param As Range
Set param = par
a = func.GoalSeek(val, par)
goal = par.value
Set par = param
End Function
Теперь возвращает начальное значение параметра, но не подобранное

Добавлено через 40 секунд
Т.е. возвращает 1 вместо 2,893434 которое должен
0
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
22.06.2015, 16:18 4
Цитата Сообщение от iana Посмотреть сообщение
Теперь возвращает начальное значение параметра, но не подобранное
потому что
Visual Basic
1
ByVal par As Range
Вы же написали
Цитата Сообщение от iana Посмотреть сообщение
При этом сам параметр и значение функционала остаются неизменными
Эммм ещё один момент - ваша функция не вернёт ничего, потому как все вычисления присваиваются переменной а
Visual Basic
1
a = func.GoalSeek(val, par)
А она мало того, что не объявлена, так ещё и просто ничего не делает ):
1
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 29
22.06.2015, 16:27  [ТС] 5
Цитата Сообщение от сороконожка Посмотреть сообщение
ещё один момент - ваша функция не вернёт ничего, потому как все вычисления присваиваются переменной а
Вот это-то и непонятно. а - это просто переменная типа булеан получается. Т.к. GoalSeek() возвращает либо True либо False.
Если программу запускать пошагово, то подбор параметра вообще весело происходит, он все время скачет и непонятно, как с этим справится, т к тогда начальные значения никак не сохраняются - это про byVal
0
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
22.06.2015, 17:18 6
Цитата Сообщение от iana Посмотреть сообщение
Т.к. GoalSeek() возвращает либо True либо False.
Я всё ещё не могу разобраться как сделать то, что вы хотите внутри функции.

Добавлено через 22 минуты
Я вас всё-таки вынужден огорчить, мне не удалось внутри процедуры заставить функцию работать, как и написано в справке - она возвращает только TRUE или FALSE.
1
призрак
3263 / 891 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
22.06.2015, 18:39 7
Цитата Сообщение от iana Посмотреть сообщение
Я пишу =goal(A2;B1;B2) и возвращается #ЗНАЧ!
у функций, написанных на VBA и вызываемых с листа, есть ограничение - они не могут менять ячейки.
никаким образом.
а вызываемый внутри Вашей функции подбор параметра - меняет.
1
22.06.2015, 18:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2015, 18:39
Помогаю со студенческими работами здесь

Подбор параметра
где найти функцию подбор параметра в Excel 2003

Подбор параметра
Какую сумму денег необходимо взять человеку для организации бизнеса, если процентная годовая...

Подбор параметра
Люди, кому не жалко времени, помогите плз... Ато заданий много, понимаю плохо, явно не успеваю(( ...

Подбор параметра
Есть график функции вот таблица значений нужно узнать значение x в точке y=0. Выбираю АНАЛИЗ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru