我是excel solver的新手,我尝试将它用于我认为相当简单的任务,但它只是赢得了工作。
我有3列如下:
%CHNG | PnL | Criteria met
1 | 1 | 1
.5 | 2 | 2
2 | -1 | -1
3 | 6 | 6
-1 | .5 |
-.2 | -5 |
以及以下2个单元格:
Criteria: 0
Total: =sum of criteria met column
当'标准中的数字'细胞被改变了符合标准的值。只有在'%CHNG'中的值时,才会从PnL列发布列。列大于'条件中的值'使用if语句的单元格。
'总计'然后,单元格是“符合条件”的总和。柱。 (PnL值大于标准值)
我正在努力让解决方案最大限度地提高' Total'单元格,通过更改“条件”中的值'但是,每当我尝试这个时,它会使标准单元格保持不变,并声称已找到解决方案。无论我最初在标准单元格中具有什么价值,解算器都声称这是运行时的解决方案。
有什么方法可以让它发挥作用吗?最好没有VBA
谢谢
答案 0 :(得分:1)
没有Solver的方法:使用A2:B7中的%CHNG和PnL数据,在D2中使用此公式在条件等于A2时创建分数:
=SUM(IF($A$2:$A$7>A2,$B$2:$B$7,0))
(作为数组公式输入:CTRL-SHIFT-ENTER)。将该公式复制/粘贴到D3:D7中以获得其他%CHNG值的分数。对于这组数据,当%CHNG为-0.2时,最大得分为8。
获得所有分数最大值的公式为:
=MAX(D2:D7)
获得与最大值相关联的%CHNG值的公式为:
=INDEX(A2:A7,MATCH(MAX(D2:D7),D2:D7,0))
希望有所帮助。
答案 1 :(得分:1)
如果您想使用Solver进行操作,请使用" Evolutionary"求解器而非默认" Simplex LP"求解。
细胞C2应该是
=IF(A2>=criteria,B2,"")
等
如果求解器想要变量限制只是限制"标准"在-100和100之间
HTH
答案 2 :(得分:1)
这是一种在一定范围内获得最大值的方法。这称为最大子阵列问题see here。
和以前一样,我假设您的%CHNG和PnL数据在A2:B7中。首先,您需要根据%CHNG对数据进行排序。 D列将保持“此处最大结束”,E列将保持“最大到目前为止”。我们在F列中也有“First”,G列中有“Last”---这些是%CHNG的第一个和最后一个值,它们对应于最大总和。
在D2到G2中输入以下公式:
=B2
=B2
=A2
=A2
现在在D3到G3中输入以下公式:
=IF(D2+B3>=B3,D2+B3,B3)
=MAX(D3,E2)
=IF(D2+B3>=B3,F2,A3)
=IF(E3=D3,A3,G2)
将这些公式复制/粘贴到数据末尾。单元格E7给出最大总和。单元格F7和G7给出%CHNG的值,PnL在该值上求和以获得最大总和。
希望这有帮助。