问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用excel把一组数据中几个数之和小于或等于另一个数,把这几个数筛选出来编成一

发布网友 发布时间:2022-10-10 22:21

我来回答

1个回答

热心网友 时间:2023-10-09 16:12

如果你的原始数据不是很多,一般小于20个数,可以用一种比较简单的解题思路,以你的举例为例:
1、将原始数据填入一个新建工作表(如sheet1)的A列(从A1开始填),在B1输入:=SMALL($A$1:$A$10,ROW(A1)) 回车,将公式下拉填充到B10,这样就将原始数据从小到大排了一下序;

2、先判断需要几个数相加最接近某个数(举例中是要最接近6),依次选中B1,B1和B2,B1、B2和B3,……,看工作表状态栏的求和结果,当结果刚好大于6时,看是选中了几个数,举例中选中B1到B5就大于6了,数组中最小的5个数的和都大于6了,说明几个数相加的个数不能大于或等于5,再依次选中B10,B10和B9,B10、B9和B8,……,看看工作表状态栏的求和结果,要选中几个才会大于6,按举例是要选中B10、B9和B8时才大于6,数组中最大的3个数相加才大于6,说明几个数相加的个数不能小于3,所以可以判断,满足要求的几个数的组合只能是3个数相加或者4个数相加;

3、分别编写3个数相加和4个数相加的VBA代码:
在工作表中,按alt+f11,打开VBA编辑器,在左上角的工程窗口双击数据所在工作表(如sheet1),在弹出的代码窗口中输入如下代码:

Sub choosecombo()
c = 3
For i = 1 To 8
For j = i + 1 To 9
For k = j + 1 To 10
a = Cells(i, 1) + Cells(j, 1) + Cells(k, 1)
If a = 6 Then
c = c + 1
Cells(1, c) = Cells(i, 1)
Cells(2, c) = Cells(j, 1)
Cells(3, c) = Cells(k, 1)
Cells(5, c) = a
End If
Next k
Next j
Next i
End Sub

Sub choosecombo2()
c = 3
For i = 1 To 7
For j = i + 1 To 8
For k = j + 1 To 9
For l = k + 1 To 10
a = Cells(i, 1) + Cells(j, 1) + Cells(k, 1) + Cells(l, 1)
If a = 6 Then
c = c + 1
Cells(12, c) = Cells(i, 1)
Cells(13, c) = Cells(j, 1)
Cells(14, c) = Cells(k, 1)
Cells(15, c) = Cells(l, 1)
Cells(17, c) = a
End If
Next l
Next k
Next j
Next i
End Sub

保存后关闭VBA编辑器

4、在工作表中依次点 工具→宏→宏,在弹出窗口中分别选中刚才编写的宏(宏名分别为sheet1.choosecombo()和sheet1.choosecombo2()),分别执行,OK,符合要求的组合结果将输出在原始数据所在工作表中。(如果你不是很理解,你以你的举例为原始数据,按照我说的步骤做一遍应该能明白,如果是其它数据,思路和方法也是一样的,但是代码要做相应修改,比如:因为你的举例中有结果刚好等于6的组合,未来避免数据过多,我在代码中只取=6的结果,如果没有刚好等于需要的某个数的组合,那应将上述代码中的if a=6 then改成if a<=6 and a>5.9 then,而且实际情况不一定是a>5.9,要根据你原始数据的精度来确定,如果数据取得太大,结果太多,不宜找需要的结果,如果数据取得太小,指定代码后将没有结果输出)。

5、如果原始数据庞大,就不能用上述方法了,判断能否用上述方法,要看上述第2步中所得的最大个数a,和数组中有多少个数b,如果b的a次方大于10亿,就不能用上述代码了,因为主频为1GHz的电脑,每秒运算1024*1024*1024约等于10.7亿次,数据太大将会造成卡机或需要很长时间才能计算出结果。你的举例*有10个数,最大组合为4,10的4次方才1万,所以能很快计算出结果。如果数据庞大,则需要用到运筹学软件Lingo和excel结合来处理该类问题,具体可参考:
http://club.excelhome.net/thread-392726-1-1.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
圈里的数字是怎么来的? 感谢老师的感谢信怎么写 ...仰卧起坐时就像是用头把上身扯自己起来的,腰部也没有以前那... 如何下载电子杂志模板 word中的横线删不掉怎么办 苹果手机不见了,怎么查定位? 新买的导航仪为什么总是反复显示休眠倒计时,而且还充不进去电??? fαn的汉字第三声 这个字是ban吗?(贩) 如何在家自制薯片 国企有没办法和其他个人资本混改? 高质量的葛粉什么特点? 北京哪卖的臭豆腐好吃?馋啊 北京哪卖好吃的臭豆腐啊?= = 延庆永宁的豆腐哪家比较好吃? 汽车发动机什么是扭矩储备系数?转速储备系数? 什么是扭矩储备系数?转速储备系数? 椰果罐头的制作工艺 汪毅夫的科研成果 剪映柔光特效不见了 卡拉赞毕业 355 了 要打哪个团队本呢 几个团队本顺序·· 主流刷粉团355 - 现代中式客厅走道吊顶用磨砂玻璃还是艺玻 罐头里面的椰果到底是什么都东西啊 关于来自哈佛推荐的必读书籍 梦见蘑菇有什么寓意 tcl空调遥控器制热不显示温度? 梦见鱼和龟是什么意思 勐海叶庄双丽茶业有限公司怎么样? 大写的中国朗诵词 能逗女朋友开心的故事你都知道哪几个 在excel中两个单元格的数值相加和大于或等于1时均为1怎么实现,以单元格A和B为例,还请教高手 iphone4S主屏幕贴了普通的一张透明膜 想再贴一张彩膜 普通膜要撕掉吗? 苹果手机贴彩膜有坏处吗 FMEA+中降低风险的改善动作的优先次序应该是:①严重度②危险程度严重度和发_百度问一问 适合三年级画的画 奔向一定的目的地是什么意思? 50万利息4,5,20年不取到时会有多少钱? 六年级语文单元测试卷答案 小李买房向银行申请贷款50万元,贷款年利率为12%,分20年等额还清, 计算:如果按年复利,每年还多少? 哪个牌子的红木家具好 本命年梦见勃子上面全都是灰,别人用手在退也退不掉? 求一个人给另一个人鞠躬的图片 办了移动宽带后移动公司的人是不是会把网线牵到你家这个时候你只需要安装一个光猫和路由器就可以接上了? 、辉同音字 辉的同音字有哪些 晖和辉的什么相同,用音序查字法都是现场大写字母什么 和辉 意思差不多的字是什么字 与辉同音不同字 关于辉字的成语最好同音不同字的 辉能换什么字?