作者:乔山办公网日期:
返回目录:excel表格制作
Sub test()
Dim MaxRow As Integer, i As Integer
Dim StrFormula1 As String, StrFormula2 As String
MaxRow = Range("A65536").End(xlUp).Row
For i = 2 To MaxRow
Range("I2") = "=SUMPRODUCT(E2:G2,OFFSET(J1:L1," & i - 1 & ",))"
Range("I3") = "=SUMPRODUCT(E3:G3,OFFSET(J1:L1," & i - 1 & ",))"
Range("I4") = "=SUM(OFFSET(J1:L1," & i - 1 & ",))"
SolverReset
SolverOk SetCell:="$I$4", MaxMinVal:=3, ValueOf:="1", byChange:=Replace("$J$2:$L$2", "2", i)
SolverAdd CellRef:="$I$2", Relation:=2, formulaText:="$A$" & i
SolverAdd CellRef:="$I$3", Relation:=2, formulaText:="$B$" & i
SolverSolve
Next
End Sub
先在模块中引用e799bee5baa6e79fa5e98193e4b893e5b19e332 规划求解 工具 引用 点选 SOLVER
请上传你的方程文本。
这类问题很难用公式来求解,可用Excel的规划求解来来做。另外应该还有x、y的一些限制条件,如为大于或等于0的整数。
如图,先在工作表中建立数学模型:A2中输自入任意一个对应x的数字,B2中输入对应y的数字,C2中按给定的方程输入z的计算式:
C2=40*A1+75*B2
D2中输入目标值276
E2中求余数:
E2=D2-C2
数据菜单,找到规划求解,如果没有,就要文件的选项百上加载。图中设置目标单元格为E2单元格,目标值:最小,可变单元格,A2:B2(即x和y可变化度),再添加约束条件,如图添加了3个约束条件。
求解方法中,Excel提供了3个方法,一般说来,只要问题有解,总有一种方法是能得到解的。实际应用时,可以选择不同的求解方法测试。选项中,一般设置最大求解时间,知或最大求解次数,以防问题无解或难收敛时造成死循环。都设置好后,按求解。
一般根据问题的难易程度,Excel经过数秒到数分或几十分钟后,会给出一个结果,有解的会给出一比较接近道目标的结果,不满意,可以再次求解。
本问题比较简单,所以大概2秒左右就得到如下图所示的解。
用矩阵模型来求解