比如A列是
25
11
37
28
6
200
12
求哪几个数字之和等于68如何用excel公式找出?
这个是肯定可以办到的,而且以前我做过,现在忘了,应该是B列是可变列,c1写上=A1*B1然后往下拖,最后要用到什么多变量求解工具,我记得以前我的2003是简版,还特意下载了一个什么多变量求解的安装包
1、在B8单元格输入=SUMPRODUCT(A1:A7,B1:B7)
2、在“数据”选项下的“规划求解”中,以B8为目标单元格,目标值68,B1:B7为可变单元格,并添加约束条件,B1:B7为整数、B1:B7为二进制(即0或1),然后求解,并保留符合条件解,即可。
详见附图
一共有2^7=128种组合
a1_a7 为数字
b1=MAX(IF(IF(ROW(1:128)<=64,A17,0)+IF(MOD(ROW(1:128),64)<32,A18,0)+IF(MOD(ROW(1:128),32)<16,A19,0)+IF(MOD(ROW(1:128),16)<8,A20,0)+IF(MOD(ROW(1:128),8)<4,A21,0)+IF(MOD(ROW(1:128),4)<2,A22,0)+IF(MOD(ROW(1:128),2)<1,A23,0)=68,ROW(1:128),""))
数组公式,ctrl+shift+enter,
c1=IF(b1<=64,"A1+","")& IF(MOD(b1,64)<32,"A2+","") &IF(MOD(b1,32)<16,"A3+","") &IF(MOD(b1,16)<8,"A4+","") &IF(MOD(b1,8)<4,"A5+","") &IF(MOD(b1,4)<2,"A6+","") &IF(MOD(b1,2)<1,"A7","") &" = 68"
就是你要的结果
或者:你还可以用下面数组公式查看所有组合:
=IF((ROW()-1)*8+COLUMN()<=64,A17,0)+IF(MOD((ROW()-1)*8+COLUMN(),64)<32,A18,0)+IF(MOD((ROW()-1)*8+COLUMN(),32)<16,A19,0)+IF(MOD((ROW()-1)*8+COLUMN(),16)<8,A20,0)+IF(MOD((ROW()-1)*8+COLUMN(),8)<4,A21,0)+IF(MOD((ROW()-1)*8+COLUMN(),4)<2,A22,0)+IF(MOD((ROW()-1)*8+COLUMN(),2)<1,A23,0)
那么如果没有,怎么找出最接近答案的组合,比如要找以上哪几个相加最近似67或69
追答你至少可以判断其中必定有某一个数字,按照前面的方法加入到约束条件中。使用规划求解后,如果没有,那么可以调整、添加更多的。例如开始设定必定有6,结果没有的话,可以删除这个约束条件6,添加一个11 的约束值,又或者可以同时用一个单元格为6,另一个单元格为11的条件来约束,这样结果更容易得到。按你给出的数,一般调整3-4次就可以得到结果。规划求解本身往往就会给出一些接近的数字。你可以再用lookup或者match函数,将规划求解的结果去数据列中匹配最接近的值(要先对数据列排顺序)。函数具体用法可以看帮助。
本回答被提问者和网友采纳