带有移动目标和搜索变量的目标搜索宏
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")
我有一个目标搜索宏:
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")