我有一个目标寻求宏:
Sub GOALSEEK()
Range("K25").GOALSEEK Goal:=0, ChangingCell:=Range("K10")
End Sub
适用于2015Q4,单元格K25
为0%。
我想调整宏以移动目标和搜索变量。
移动目标将存储在C25
(0,0.01,0.05等)中,移动的搜索将取决于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行动。
答案 0 :(得分:1)
在您的代码中加入一些条件逻辑,如下所示,根据在单元格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
您可以进一步将此范围变量设置为您想要更改的单元格。如果这对您不起作用,请告诉我。
答案 1 :(得分:1)
您可以尝试以下方法:
定义新的命名范围,例如SeekCell
,并在参考中输入:
=INDEX($I$25:$K$25,1,MATCH("2015"&$C$6,$I$9:$K$9))
定义新的命名范围,例如ChangeCell
,并在参考中输入:
=INDEX($I$10:$K$10,1,MATCH("2015"&$C$6,$I$9:$K$9))
定义新的命名范围,例如GoalCell
,并在参考中输入:
=$C$25
在VBA代码中使用:
Range("SeekCell").GOALSEEK Goal:=Range("GoalCell"), ChangingCell:=Range("ChangeCell")