我在这里抓住吸管,所以任何帮助都会很棒(即我不知道我在用VBA做什么)。
我正在尝试通过创建目标搜索宏来解决Excel中的循环引用问题 - 基本上
S3 = M + S2
,S3 = L * G
。 我希望通过更改M.
来寻求S3等于L * G
所以,我已经把
了L * G
中的H32
,S3
H18
,
{li> M
G18
,
在S2
中F18
这是我到目前为止收集的内容。
Sub GoalSeek()
Dim x As Integer
x = Range("H32").Value
Range("H18").GoalSeek Goal:=x, ChangingCell:=Range("G18")
End Sub
我收到“参考无效”错误,想法? 谢谢!
答案 0 :(得分:5)
如果GoalSeek单元格包含值而不是公式,或者如果ChangingCell包含公式而不是值或任何值,则GoalSeek将抛出“无效引用”错误。
GoalSeek单元格必须包含直接或间接引用ChangingCell的公式;如果公式没有以某种方式引用ChangingCell,则GoalSeek可能无法收敛到答案或者可能产生无意义的答案。
我使用与您不同的GoalSeek公式测试了您的代码(我不太清楚某些术语是指单元格还是值)。
为了测试,我设置了:
the GoalSeek cell H18 = (G18^3)+(3*G18^2)+6
the Goal cell H32 = 11
the ChangingCell G18 = 0
代码是:
Sub GSeek()
With Worksheets("Sheet1")
.Range("H18").GoalSeek _
Goal:=.Range("H32").Value, _
ChangingCell:=.Range("G18")
End With
End Sub
代码产生了1.1038的(正确)答案,G18的值,H18中的公式产生11的值,这是我寻求的目标。
答案 1 :(得分:1)
我认为您的问题是Range("H18")
不包含公式。此外,您可以通过删除x
来提高代码效率。而是将代码更改为
Range("H18").GoalSeek Goal:=Range("H32").Value, ChangingCell:=Range("G18")