Как использовать функцию поиска цели в пользовательской функции Excel?
Есть способ использовать поиск цели в MS Excel как следующий код. Работает нормально.
Sub GSeek()
With Worksheets("Sheet1")
.Range("H18").GoalSeek _
Goal:=.Range("H21").Value, _
ChangingCell:=.Range("G18")
End With
End Sub
И я хотел бы использовать функцию для поиска цели следующим образом.
Function fSeek(a As Range, b As Range, c As Range)
a.GoalSeek Goal:=b.Value, ChangingCell:=c
fSeek = "Ok"
End Function
Тем не менее, код работает мирно, и ответ не был получен в диапазоне c. Где я не прав?
2 ответа
Спасибо всем, что ответили мне. Я нашел свой вопрос снова здесь после долгого времени. Мне довелось найти решение этого вопроса с помощью мероприятия.
В Microsoft Excel Object-Sheet1(Sheet1) мы можем написать только следующий код:
'----------------------------------------------
' Goal seeking when the worksheet changes.
'----------------------------------------------
' Here we want to do goal seek for Range("H18")
' with the Goal cell as Range("H21")
' and the changing cell as Range("G18").
'
Private Sub Worksheet_Change(ByVal Target As Range)
Range("H18").GoalSeek Goal:=Range("H21"), ChangingCell:=Range("G18")
End Sub
Это круто?
Yun
Я пишу ответ, потому что кажется, что этот вопрос возрождается.
Суть в том, что пользовательским функциям (UDF) не разрешается изменять другие ячейки при вызове из формулы.
Решение: Чтобы автоматизировать поиск бога, напишите макрос VBA, а не UDF.
Макрос может автоматизировать поиск целей в любом диапазоне или наборе ячеек. Поскольку макрос не имеет параметров, существует множество способов разрешить пользователю указывать набор ячеек для GoalSeek
и параметры, и направить их к Range.GoalSeek
метод:
1- Дизайн посвященный UserForm
2- Используйте VBA InputBox
функция или, возможно, Excel Application.InputBox
функция с параметром type:=8
ввести диапазон.
3 - выделите несколько ячеек на рабочем листе, где пользователь может ввести параметры.