ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4090|回复: 26

[求助] 组合求和,求一段代码。先谢谢各位老师了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-12 10:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
详附件 组合求和.rar (4.81 KB, 下载次数: 56)


TA的精华主题

TA的得分主题

发表于 2013-5-12 12:10 | 显示全部楼层
本帖最后由 thjszxzdy 于 2013-5-12 16:42 编辑

这样的数有无穷,若是全加或者全减差不多可数。或者只挑选出5个值以内也许行的。要多一点条件限制才行。推算一下,是可以做出来的,递归的方法我不是很熟。无法帮忙了。5楼搞出来了,不错。虽然我也看不懂,但粗略知道它没有减法。我可以写个减法,不枉占楼。仅仅有正负数,主体程序在5楼。
  1. Sub jishu()
  2. Dim arr, arr2
  3. Dim i, p
  4. ReDim arr(1 To Range("a65536").End(3).Row)
  5. For p = 1 To Range("a65536").End(3).Row
  6. arr(p) = Cells(p, 1).Value
  7. Next p
  8. b = UBound(arr)
  9. c = LBound(arr)
  10. ReDim Preserve arr(1 To b * 2)
  11. For i = b + 1 To UBound(arr)
  12. t = i - 12
  13. arr(i) = Cells(t, 1).Value * (-1)
  14. Next i
  15. For r = 1 To UBound(arr)
  16. Cells(r, 1).Value = arr(r)
  17. Next r
  18. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2013-5-12 13:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
占位等高手。

点评

我来也!  发表于 2013-5-13 14:44

TA的精华主题

TA的得分主题

发表于 2013-5-12 13:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-5-12 13:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
加数和减数分别求和再判断

组合求和.zip

8.45 KB, 下载次数: 48

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-12 17:18 | 显示全部楼层
5楼的代码很好用。不愧为高手,这么难的问题那么快就写出来了。谢谢!!!!
只是代码没有减法,该怎么修改呢?

点评

结果很多,修改了也没有通用性,如果仅仅求一两个解,不妨这样:第二次运行代码,输入(和-20)/2 第一次结果值全部包含第二次结果值的,即为负数  发表于 2013-5-12 20:47

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-12 17:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师,可不可以在B列加一列A列的负值,运算时取A1、B1中的一个值?

TA的精华主题

TA的得分主题

发表于 2013-5-12 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
比如第一次输入40,结果为:
17,5,18
18,17,5
25,9,6
3,9,6,17,5
5,17,18
5,18,17
5,3,9,5,18
5,3,9,6,17
5,3,18,9,5
12,6,17,5
12,3,25
12,5,5,18
12,5,6,17
12,5,18,5
12,5,3,9,6,5
第二次输入 (40-20)/2=10  结果为:
5,5
第一次结果包含5,5的,即为负数

TA的精华主题

TA的得分主题

发表于 2013-5-12 21:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
类似这类排列组合的情况在算法上确实是一个挺不错的东东。经常玩这些确实能够锻炼我们的一些思考问题的方式。
楼上dsmch兄,给的一种使用“位”的思路确实挺快速方便,值得学习。
我使用的递归方法进行处理的,随着值的增多,处理的时间越来越多,也出现溢出的情况。你可以根据自己的情况,进行优化处理。
单一的你给的12个数据考虑加减的情况出现的组合达到2945个组合。

组合求和_SI.rar

17.13 KB, 下载次数: 29

递归求解(SI)

TA的精华主题

TA的得分主题

发表于 2013-5-12 21:55 | 显示全部楼层
凑数字简单,但是要求的那个地址真的不知道怎么弄!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-3-14 04:31 , Processed in 0.029718 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表