EXCEL如何求出哪几个单元格里的数字之和等于某个特定值
25
11
37
28
6
200
12
求哪几个数字之和等于68如何用excel公式找出?
这个是肯定可以办到的,而且以前我做过,现在忘了,应该是B列是可变列,c1写上=A1*B1然后往下拖,最后要用到什么多变量求解工具,我记得以前我的2003是简版,还特意下载了一个什么多变量求解的安装包 展开
一共有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)
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.如果没有结果,保存方案,然后再打开规划求解,逐个调整约束条件,一般几次就可以得到结果
那么如果没有,怎么找出最接近答案的组合,比如要找以上哪几个相加最近似67或69
你至少可以判断其中必定有某一个数字,按照前面的方法加入到约束条件中。使用规划求解后,如果没有,那么可以调整、添加更多的。例如开始设定必定有6,结果没有的话,可以删除这个约束条件6,添加一个11 的约束值,又或者可以同时用一个单元格为6,另一个单元格为11的条件来约束,这样结果更容易得到。按你给出的数,一般调整3-4次就可以得到结果。规划求解本身往往就会给出一些接近的数字。你可以再用lookup或者match函数,将规划求解的结果去数据列中匹配最接近的值(要先对数据列排顺序)。函数具体用法可以看帮助。
--------------------------------------------------------
EXCEL里能想到的无非是规划求解。
使用规划求解时,需要设定变量个数和约束条件。
你可以通过基本判断,试算变量个数从4到7,
但你没法设定约束条件,让变量从给定的集合里选择。
不少人问过这样的问题,我在EXCEL里编了个VBA程序,可以求解这类问题。
需要的话留邮箱