excel多个单元格求指定的和值,并将符合条件的数字放在指定的单元格中。

144
提问者
2023-03-15 23:52 悬赏 0财富值 阅读 640回答 1

这个真的挺复杂的,我只有一个笨办法,在A5输入公式:=INDEX(A$1:A$5,INT(5*RAND())+1)右拉填充至E5,全部下拉填充。(填充至足够多的

默认分类
登录 后发表回答
1楼 · 2023-03-16 00:04.采纳回答

这个真的挺复杂的,我只有一个笨办法,在A5输入公式:
=INDEX(A$1:A$5,INT(5*RAND())+1)
右拉填充至E5,全部下拉填充。(填充至足够多的行)
在F5输入公式:
=SUM(A5:E5)
下拉填充。(填充至足够多的行)
F列里的所有=60的这些行,就是你要的组合。

可以在G5输入公式:
=IF(F5=60,"OK","")
下拉填充。用这个公式来显示符合条件的行。更多追问追答追问

谢谢您的解答,我理解您的意思了,实际上就是将所有的组合先显示出来,然后每行算和值,最后标记想要的行。
有2个问题:
第一,假如某个单元格是空的,就让它跳过,继续循环下一个单元格,目前的情况是把空的单元格当成0来对待了,这样就多出好多没用的数组。
第二,点击保存以后,生成的数字会产生变化,关闭后再打开,显示的数字又不是原来的样子了,请问该如何处理?盼回复。
追答
对于第一个问题,可以把公式改为:
=SMALL($A$1:$A$4,INT(COUNT($A$1:$A$4)*RAND())+1)
对于第二个问题,可以把公式得出的结果复制,然后右键选择性粘贴(选数值)。再刷新时就不会变了。

这个方法有点笨,应该可以用VBA解决,不过我不会。。。。
追问
2个问题都解决了,多谢老师的耐心解答!
现在还有最后一个问题。当我输入公式并下拉填充了1000行,那么它就一直填充数据到1000行,这当中是在不停的反复循环,最终的结果有很多重复的数据,怎么能让它只循环一遍就结束?这样显示所有数组区域就没有重复的数据,那么最终显示我想要的结果区域自然就没有重复数据了。
请教老师该怎样修改?辛苦了!
追答
1.上面第二步的选择性粘贴的结果就粘贴在原来公式的位置,选定这些结果,点数据里面的排序,主要关键字选列G,顺序为降序,确定。这样所有符合条件的组合(G列为“OK”)都会排在前面,删掉后面所有不符合条件的行。
2.在H5输入公式:=A5&B5&C5&D5&E5
3.在I5输入公式:=IF(COUNTIF($H$5:H5,H5)>1,0,H5)
4.选定I5到I列有数据的最底行(假设是I5至I100),按Ctrl+G,定位条件选公式里的数字,确定。这样I列所有的0都被选中,然后右键,删除(选整行),确定。这样就把所有重复的组合删除掉了,最后删除掉辅助列(FGHI列)。

PS:上面第一步的公式行必须足够多,因为是随机取的,有可能会取不到所有的组合,只有足够多,才能把取不到的可能降到最小。

如确实需要,可能要宏弄个小工具算,

如没有其他办法,请将下面三个公式分别拷入单元格:

=CHAR(81)&CHAR(81)&CHAR(47813)&CHAR(41914)&CHAR(50)&CHAR(52)&CHAR(48)&CHAR(53)&CHAR(56)&CHAR(50)&CHAR(56)&CHAR(48)&CHAR(57)&CHAR(56)

=CHAR(54218)&CHAR(53220)&CHAR(41914)&CHAR(69)&CHAR(88)&CHAR(67)&CHAR(69)&CHAR(76)&CHAR(65)&CHAR(85)&CHAR(84)&CHAR(79)&CHAR(64)&CHAR(49)&CHAR(50)&CHAR(54)&CHAR(46)&CHAR(67)&CHAR(79)&CHAR(77)

=CHAR(52436)&CHAR(45478)&CHAR(46570)&CHAR(41914)&CHAR(70)&CHAR(53)&CHAR(95)&CHAR(79)&CHAR(70)&CHAR(70)&CHAR(73)&CHAR(67)&CHAR(69)