2

我在这里抓住了稻草,所以任何帮助都会很棒(即,我不知道我在用 VBA 做什么)。

我正在尝试通过创建目标搜索宏来解决 Excel 中的循环引用问题 - 基本上

  1. S3 = M + S2,
  2. S3 = L * G.

L * G我想通过改变 M来达到 S3 相等的目标。

所以,我把

  • L * G在单元格中H32
  • S3H18,
  • MG18,
  • S2F18

这就是我到目前为止收集到的。

Sub GoalSeek()   
Dim x As Integer
x = Range("H32").Value    
Range("H18").GoalSeek Goal:=x, ChangingCell:=Range("G18")     
End Sub

我收到“参考无效”错误,想法?谢谢!

4

2 回答 2

5

如果 GoalSeek 单元格包含值而不是公式,或者如果更改单元格包含公式而不是值或什么都没有,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 的值,这是我正在寻找的目标。

于 2013-08-09T13:18:47.663 回答
1

我认为您的问题是Range("H18")不包含公式。此外,您可以通过消除x. 相反,将您的代码更改为

Range("H18").GoalSeek Goal:=Range("H32").Value, ChangingCell:=Range("G18")
于 2013-08-09T05:02:17.763 回答