【问题标题】:Goal Seek Macro with moving Goal and Seek variables具有移动目标和搜索变量的目标搜索宏
【发布时间】:2015-04-02 15:43:56
【问题描述】:

我有一个目标搜索宏:

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

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

我想调整宏以移动 Goal 和 Seek 变量。

移动目标将存储在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 移动。

【问题讨论】:

  • 您有问题吗?您是否有问题,弄清楚,然后将您的答案发布为您的编辑?
  • 我只是在发布问题并弄清楚如何调整目标后进行修补。但我还是不知道如何调整移动的 Seek。
  • 看看这是否有帮助:stackoverflow.com/questions/16240176/…
  • 你如何决定在哪个单元格上执行搜索?我可以想到几种方法来做到这一点。
  • @Kyle。搜索将针对 Q2、Q3、Q4 在单元格 C6 中决定/选择(并在 C7 中连接以匹配 I9、J9、K9)。如果 Q3,K25 和 K10 将更改为 J25 和 J10。

标签: vba excel excel-2011


【解决方案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

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

【讨论】:

  • 几乎!但是K10也要调整到“Q2”然后“I10”,“Q3”然后“J10”
【解决方案2】:

您可以尝试以下方法:

定义新的命名范围,例如 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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多