Excel如何在一列数字中找出几个之和等于某个特定值

实际数量,单价不变数量可变(数量要为整数,数量不可为零),计算结果为8099.8(相差值小于等于5)

典型的规划求解问题,但对截图中的数据有个疑问,就是单价中有两个542.1,一个542。对于这3行的数量取值,在期望的误差之内会是按同样的单价来处理的,不知单价是随意输入的,还是实际的数据。本回答中按截图数据来处理,但这3行数据分成3行的实际意义不大。

规划求和时先建立数据模型,以截图数据为例,D列(截图无行号和列标——百度知道提问中的通病!)总额为数量(B列)*单价(C列),如:

D2=B2*C2

下拉,然后对总额求和:

D10=SUM(D2:D9)

D11中输入目标数据:8099.8

D12中输入求和总额与目标值的误差绝对值:

D13=ABS(D10-D11)

数据模型建立后,就可以开始用规划求解了,数据选项卡——分析——规划求解,调出规划求解对话框。在对话框中,目标单元格:D12;目标值选择最小(能否达到<5,则与你的数据源有关,如果能有解,误差会很小,如果没有满意解,设置为小于5也没用。可变单元格:B2:B9(数量)。然后添加2个约束:

B2:B9=整数 ——数量必须是整数,添加约束为整数时,选择int就是整数

B2:B9<=A2:A9 ——数量不能超过实际数量吧(提问中并没有提及)

B2:B9>=1 ——要求数量不能为0

然后选择求解方法,一共有3个方法,3种方法具体有什么不同,Excel中也没有提供具体的帮助说明,一般来说,只要问题有解,总有一种方法能得到比较满意的解。为了防止无解的问题或数据模型建立缺乏合理性、约束条件过多或缺乏条理,造成求解列循环或耗时太长,可以在“选项”设置最大求解时间或/和最大循环次数。

以上都设置好后,就点“求解”,根据问题的难易程度、数据的复杂程度,Excel经过数分钟到数十分钟后,只要问题有解,就会给出一个组解。得到的解不满意或得不到求解结果时,可修改设置(如约束条件、改变求解方法等)后,再进行求解。

本解结果误差为0.4,已远小于题主误差小于5的要求。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-02
我前几日刚给别人做了一个,发给你看看,
它是将A列的数字中找出一组数字,使其和最接近6000
忘记说明一下了:这是用vba代码实现的,快捷键为ctrl+m
你可以先看一下代码
若是对vba不很熟悉,我也可以给你做i个
第2个回答  2019-04-02
可以试试规划求解。
但不建反向处理,前期处理好数据后期大家都方便。
相似回答