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)
这个不能直接用公式得出,而是要用到excel的另一个功能——规划求解。步骤如下
1.如工具菜单下无“规划求解”项,点工具—〉加载宏,在弹出的窗口勾选“规划求解”
2.先在单元格设置一个公式,等于另外几个空白单元格相加。这几个相加的单元格数量取决于你估计的数量。例如你列出的7个数字中,200肯定排除在外,按最小的数来估计,最多是4个数相加。那么你的公式就设置为四个单元格相加。例如,设置A1=a2+a3+a4+a5
3.点“规划求解”,设置目标单元格A1 的“值为”68,可变单元格为$A$2:$A$5
4.在“约束”下面点击“添加”,左边选A2,中间选<=,右边输入37,点击添加。
5.继续左边选A2,中间选=>,右边输入6,点击添加
6.继续左边选A2,中间选int(限制为整数),点击添加
7.限制了第一个数的范围后,同理对其它单元格进行约束,并且可以根据你的基本判断,把约束的范围缩小。例如,你判断至少其中有数字是6,那么就可以对其中一个直接输入=6的条件。而且在约束了一个最大的数,那么其余的就往下约束,例如A2约束了<=37,那A3的就约束<=28,A4就<=25
8.把所有可能的条件都加上后,确定,并点击右上角“求解”,如有结果就会出现在目标及约束单元格里。
9.如果没有结果,保存方案,然后再打开规划求解,逐个调整约束条件,一般几次就可以得到结果
答案:25+37+6
--------------------------------------------------------
EXCEL里能想到的无非是规划求解。
使用规划求解时,需要设定变量个数和约束条件。
你可以通过基本判断,试算变量个数从4到7,
但你没法设定约束条件,让变量从给定的集合里选择。
不少人问过这样的问题,我在EXCEL里编了个VBA程序,可以求解这类问题。
需要的话留邮箱
这可是EXCEL办不到的。