You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过VBA函数定义SolverOk目标函数?尝试失败求助

Excel Solver能否通过VBA函数直接指定目标函数?

核心结论

Excel Solver的SolverOk方法不支持直接通过VBA函数名指定目标函数,它仅接受工作表单元格引用(通过SetCell参数)作为目标计算的载体。你尝试的SetCell:=("MyFunction")写法无效,因为SetCell要求传入Range对象,而非VBA函数名称。

可行替代方案

如果要使用自定义VBA函数作为Solver的目标逻辑,需要通过工作表单元格间接调用函数,步骤如下:

  1. 在工作表的任意空白单元格(例如B8)中输入公式,调用你的VBA函数:
    =MyFunction()
    
    注:确保MyFunction是标准模块中定义的公共函数,可在工作表单元格中直接调用。
  2. 在SolverOk中指定该单元格作为目标:
    SolverOk SetCell:=Range("B8"), MaxMinVal:=3, ValueOf:=10000
    
    这样Solver会通过单元格的公式间接获取VBA函数的计算结果,以此作为目标值进行优化调整。

关键注意事项

  • 若VBA函数依赖Solver的可变单元格,需确保函数参数与这些单元格关联,这样当Solver调整可变单元格时,函数结果会自动更新。
  • 自定义函数需保证计算逻辑可被Solver识别(避免使用不稳定或非确定性的逻辑,如随机数生成),否则可能导致Solver无法收敛。

内容的提问来源于stack exchange,提问作者Pierre.Godot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:23:19