目标寻求宏与移动目标和寻求变量

时间:2015-04-02 15:43:57

标签: excel vba excel-vba excel-2011

我有一个目标寻求宏:

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,分别)。

enter image description here

修改

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

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

仍然不知道如何让Seek行动。

2 个答案:

答案 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")