[英]Goal Seek Macro with Goal as a Formula
我在這里抓住了稻草,所以任何幫助都會很棒(即。我不知道我在用 VBA 做什么)。
我正在嘗試通過創建目標查找宏來解決 Excel 中的循環引用問題 - 基本上
S3 = M + S2
,S3 = L * G
我想通過改變 M 來尋求 S3 等於L * G
所以,我已經把
L * G
在單元格H32
,H18
S3
,G18
M
,F18
S2
這是我到目前為止收集的。
Sub GoalSeek()
Dim x As Integer
x = Range("H32").Value
Range("H18").GoalSeek Goal:=x, ChangingCell:=Range("G18")
End Sub
我收到“參考無效”錯誤,想法? 謝謝!
如果 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,這是我尋求的目標。
我認為您的問題是Range("H18")
不包含公式。 此外,您可以通過消除x
提高代碼效率。 相反,將您的代碼更改為
Range("H18").GoalSeek Goal:=Range("H32").Value, ChangingCell:=Range("G18")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.