Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Excel用户函数中使用目标搜索函数?_Excel_Vba_Seek_Excel Udf - Fatal编程技术网

如何在Excel用户函数中使用目标搜索函数?

如何在Excel用户函数中使用目标搜索函数?,excel,vba,seek,excel-udf,Excel,Vba,Seek,Excel Udf,有一种在MS excel中使用目标搜索的方法,如下代码所示。它很好用 Sub GSeek() With Worksheets("Sheet1") .Range("H18").GoalSeek _ Goal:=.Range("H21").Value, _ ChangingCell:=.Range("G18") End With End Sub 我想用一个函数来做如下的

有一种在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范围内没有得到任何答案。我错在哪里?

我正在写一个答案,因为这个问题似乎正在死灰复燃

底线是当从公式调用时,用户定义函数(UDF)不允许更改其他单元格

解决方案:要自动查找godl,请编写VBA宏,而不是UDF

宏可以自动在任何范围或一组单元格上寻找目标。由于宏没有参数,因此有许多方法允许用户指定要
GoalSeek
的单元格集和参数,并将它们路由到
范围。GoalSeek
方法:

1-设计专用的
UserForm

2-使用VBA的
InputBox
函数,或者可能使用Excel的
应用程序。InputBox
函数和参数
类型:=8
输入范围


3-在工作表上指定一些单元格,用户可以在其中输入参数。

谢谢大家的回答。过了很长时间,我在这里又发现了我的问题。 我碰巧通过这个事件找到了这个问题的答案

在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)更改其他单元格。非常感谢您的回复。有没有办法达到同样的目标?我真的想在同一个工作表中寻找许多目标。你可以这样做,但通过宏,而不是通过公式。但宏不能使用参数。带有参数的子过程根本不显示宏列表。您始终可以找到一种方法来指定要查找的内容和参数。如果这些单元格不是先验已知的单元格,您可以使用窗体或
InputBox
(在宏中)让用户输入它们。非常感谢。我已经成功地创建了一个对话框,按照您的建议进行目标搜索。