典型的规划求解问题,但对截图中的数据有个疑问,就是单价中有两个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的要求。
我前几日刚给别人做了一个,发给你看看,
它是将A列的数字中找出一组数字,使其和最接近6000
忘记说明一下了:这是用vba代码实现的,快捷键为ctrl+m
你可以先看一下代码
若是对vba不很熟悉,我也可以给你做i个
可以试试规划求解。
但不建反向处理,前期处理好数据后期大家都方便。