查找总和最接近数字的值组合

5 microsoft-excel

我有一列数字,我想找到这三个数字的最佳组合。在我们的例子中,最好的组合是尽可能接近我们的目标数字的总和。

例如,我们的目标是 100 和这一列数字:

15
70
36
60
30
53
37
17
0
75
100
9
Run Code Online (Sandbox Code Playgroud)

如果我总结30+70+0=100这组 3 个数字 (30,70,0) 是最好的组合,因为它达到了我们的目标数字 100。我们还可以得到其他组合,例如,60+30+9=99剩下的数字,依此类推。

有没有办法通过 Excel(或其他任何东西,如果你想到的话)可以列出最好的三位数组合(类似于递归总和分布)?

bre*_*tdj 15

一种方法是使用 Solver

  • 将您的数据放在 A1:A12 中
  • 在 B13 中,输入公式 =SUMPRODUCT(A1:A12,B1:B12)
  • 设置求解器,使 B1:12 必须是二进制的(即 1 或 0)
  • 在 B14 中放置一个“目标”分数,在您的示例中为 100
  • 在 B15 中放入 =ABS(B13-B14)
  • 设置求解器以查找 B15 中的最小值(为您提供没有差异的精确解,或具有最小可能差异的最接近解)

在这种情况下,最简单的解决方案是将 100 设置为“on”(即 1),所有其他值都设置为“off”(0)

xl2003 的屏幕截图,用于解决下面的 367(因为这比 100 更复杂)

在此处输入图片说明

  • 如果我理解这个问题,它还要求解决方案由三个相加的数字组成。我不是求解器用户,但在 Excel 2010 中,我能够通过在 B16 中添加一个公式来满足该约束,该公式计算 B1:B12 中 1 的数量并将该 B16 的约束设置为 3。此外,求解方法需要设置为“进化”,否则会失败。我只是在四处闲逛。谢谢你的灵感。 (3认同)