求助编程高手!~~(EXCEL表格)

来源:百度知道 编辑:UC知道 时间:2024/05/21 23:52:45
比如有123 , 456 ,789,578,567,几个数,要求几个数加加起来和小于821,但是差额在 200以内,就是这种形式,还可以追加分数!~~~

不明白问题,解答不了。请详解。

你是想要excel自动生成这样的数吗?

需要用到VBA, excel本身做不到的.

不知道你要的结果是什么,以及现有的数据又是什么。
结果是从已有数据中取部分求和并自动填写到一个单元格里吗?

请把相关Excel文件发到 jamie_chen@qq.com。
我喜欢研究Excel的问题。呵呵。
-------------------------------------

把如下宏代码放到个人宏工作溥的模块中,即可在Excel的单元格中引用,例如:=PERSONAL.XLS!SumSelectLT(C2:C7,821,200)

宏代码:(唉,其实这个算法很复杂,如下只是勉强表示一下,离真正解决这个算法还远呀。)

Function SumSelectLT(DataRange As range, TargSum As Single, dif As Single) As Single
'DataRange: 数据区域,数据最好是按降序排列
'TargSum: 和的大小
'diff: 差多少,正的表示可以超过,负的表示可以少于
'SumSelect(A1:A6, 821, 200) 表示对A1:B6区域的数据求和,选出其中数据使和小于等于821,且大于 821-200

Dim sum As Single, t As Single
sum = 0
t = 0
For Each c In DataRange
'试一个数
If sum + c.Value <= TargSum Then
sum = sum + c.Value
t = c.Value

'如果当前数不合适,就把再前一个去掉试试
'