簡體   English   中英

以目標為公式的目標尋求宏

[英]Goal Seek Macro with Goal as a Formula

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

我正在嘗試通過創建目標查找宏來解決 Excel 中的循環引用問題 - 基本上

  1. S3 = M + S2 ,
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM