|
代码如下。。。
'1参数, 目标单元格
'2参数, 目标值
'3参数, 可变的单元格
Function MySolver(targetRng As Range, targetValue)
Dim ssjg, i, ss
targetRng.Formula = "=SUMPRODUCT(c$1:c$3*$b$1:$b$3)"
SolverReset '重置规划求解
'设置基本规划求解参数
solverok SetCell:=targetRng.Address, MaxMinVal:=3, _
ValueOf:=targetValue, ByChange:="c$1:c$3", _
Engine:=2
'添加约束
solveradd "c$1:c$3", 4
'执行,但是不显示规划求解对话框
SolverSolve UserFinish:=True
'结果返回单元格
SolverFinish KeepFinal:=1
'判断下规划求解结果是否对
If Round(targetRng.Value, 6) = Round(targetValue, 6) Then
'然后在去找对应的票号
For i = 1 To 3
If Range("c" & i).Value <> Empty Then
ssjg = ssjg + Range("c" & i).Value
ss = ss & "," & Range("c" & i).Value & "个" & Range("a" & i).Value
End If
Next
End If
'清空d列,返回结果
ss = Mid(ss, 2)
MySolver = Array(IIf(ssjg = "", "查无", ssjg), IIf(ss = "", "查无", ss))
End Function
Sub result()
Dim r, i
r = Range("f65536").End(xlUp).Row
For i = 2 To r
Range("c1:c3").ClearContents
Range("g" & i).Resize(, 2).Value = MySolver([c4], Range("f" & i).Value)
Next
Beep
End Sub
|
评分
-
1
查看全部评分
-
|