带有移动目标和搜索变量的目标搜索宏

Goal Seek Macro with moving Goal and Seek variables

我有一个目标搜索宏:

Sub GOALSEEK()
    Range("K25").GOALSEEK Goal:=0, ChangingCell:=Range("K10")
End Sub

适用于 2015 年第 4 季度,单元格 K25 为 0%。

我想修改移动目标和搜索变量的宏。

移动的Goal会存储在C25(0,0.01,0.05,etc.)中,移动的Seek会依赖C6(Q2,Q3,Q4,会映射分别连接到 I25、J25、K25)。

编辑

经过一番修修补补,我才发现可以通过将Goal:=0更改为Goal:=Range("Cell")来实现移动目标:

Sub GOALSEEK()
    Range("K25").GOALSEEK Goal:=Range("C25"), ChangingCell:=Range("K10")
End Sub

还是不知道怎么让Seek移动。

像下面这样在您的代码中加入一些条件逻辑,以根据在单元格 C6 中输入的季度即时做出决定。

Sub GOALSEEK()

Dim gseek, chngcell as Range

If Range("C6") = "Q2" Then
   Set gseek = Range("I25")
   Set chngcell = Range("I10")
Elseif Range("C6") = "Q3" Then
   Set gseek = Range("J25")
   Set chngcell = Range("J10")
Elseif Range("C6") = "Q4" Then
   Set gseek = Range("K25")
   Set chngcell = Range("K10")
End If

gseek.GOALSEEK Goal:=Range("C25"), ChangingCell:=chngcell

End Sub

您可以进一步设置另一个范围变量到您要更改的单元格。如果这对您不起作用,请告诉我。

您可以尝试以下方法:

定义新的命名范围,例如调用它 SeekCell 并在 Refers To 中输入:

=INDEX($I:$K,1,MATCH("2015"&$C,$I:$K))

定义新的命名范围,例如调用它 ChangeCell 并在 Refers To 中输入:

=INDEX($I:$K,1,MATCH("2015"&$C,$I:$K))

定义新的命名范围,例如调用它 GoalCell 并在 Refers To 中输入:

=$C

在VBA代码中使用:

Range("SeekCell").GOALSEEK  Goal:=Range("GoalCell"), ChangingCell:=Range("ChangeCell")