ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 香川群子

[分享] barry1126 求助:凑数实用例子 列出开票明细

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-15 08:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢香川群子,太强大了。这几天回老家了,都没上网。对无楼主的无私精神,我们应该予以继承发扬光大。

TA的精华主题

TA的得分主题

发表于 2014-10-14 21:56 | 显示全部楼层
本帖最后由 aoe1981 于 2014-10-14 22:00 编辑
香川群子 发表于 2014-9-10 14:49
纠正了几个小问题。

我把您的4楼附件中的“凑单总数”改为2346.5,也就是说多加了0.5,选项目数为10,运行了关于没结束,似乎假死了,请教下是为什么?是不是在应用上有什么限制条件?“均分起点”是什么意思?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 22:20 | 显示全部楼层
本帖最后由 香川群子 于 2014-10-14 22:31 编辑
aoe1981 发表于 2014-10-14 21:56
我把您的4楼附件中的“凑单总数”改为2346.5,也就是说多加了0.5,选项目数为10,运行了关于没结束,似乎 ...

如果这是一个不可能的解,那么就要一直算下去……穷尽所有组合……相当于死机。
但我试了一下没问题:

Pic.jpg


TA的精华主题

TA的得分主题

发表于 2014-10-14 22:24 | 显示全部楼层
香川群子 发表于 2014-10-14 22:20
如果这是一个不可能的解,那么就要一直算下去……穷尽所有组合……相当于死机。

那对于不可能解能不能给出一个近似的解?以上有两个字打错了“半天”不是“关于”……呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 22:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
aoe1981 发表于 2014-10-14 22:24
那对于不可能解能不能给出一个近似的解?以上有两个字打错了“半天”不是“关于”……呵呵

你说的这个毫无意义。

如果总金额不等于指定目标值,得到的解就毫无用处。……只能重新设置条件。


…………你不要胡思乱想,钻牛角尖了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 22:38 | 显示全部楼层
aoe1981 发表于 2014-10-14 22:24
那对于不可能解能不能给出一个近似的解?以上有两个字打错了“半天”不是“关于”……呵呵

随机设置项目时,如果所有10个项目都不含0.5、或无法得到结果=0.5的组合,那就注定无解!!!

TA的精华主题

TA的得分主题

发表于 2014-10-15 23:21 | 显示全部楼层
本帖最后由 aoe1981 于 2014-10-16 08:29 编辑
香川群子 发表于 2014-10-14 22:38
随机设置项目时,如果所有10个项目都不含0.5、或无法得到结果=0.5的组合,那就注定无解!!!

唉,您是组合方面的高手,我对于组合只会的是不断地嵌套循环……这,局限性很大……
  因此,很多时候限制了应用的广度与深度,许多东西做的就是想当然的“幼儿水平”……
  但我似乎乐此不疲,我喜欢用代码实现自我想法的感觉,虽然很多时候想法很愚蠢,但是居然会很开心……
  呵呵……
  我很好奇您的凑数算法的原理,但在组合面前有一只拦路虎,就是您发明的“组合的递归算法”,我实在学不会……

  下面是我做的一个“开票明细”附件,几乎没有多大的应用范围,但还是想贴一下,呵呵,“脸皮”还是很厚的……
  附件:
   开票明细(aoe1981之幼儿水平版).rar (41.75 KB, 下载次数: 121)

  特点:
  1.开票项目只支持手动选择,但是只需点击即可添加;
  2.金额凑数支持“容许误差”,近似匹配;
  3.项目最大数量限定为9,这是一个致命的缺陷,可能也可以通过“n进制数”的转换,加以突破一位数的限制,但是估计没有实际意义,那时的循环次数就是一个天文数字,是个不可能任务……
  4.还有一点:就是和3同样原因,我的项目数最多限定8个,项目数太多,组合数天啦,多的不敢想像……是为,致命缺陷2……
  5.就是最低数量,也没有真正实现,有时还会出现0……很失败……

  再次声明:纯属闹着玩的一个附件!!!
  江郎才尽,黔驴技穷啊……




TA的精华主题

TA的得分主题

发表于 2014-10-15 23:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  不过,也算是匹配出了一个吧……
   123.jpg

  我不知道,您是如何大量减少不必要的组合判断的,我反复测试您的附件,多数时候会出现一两个项目的匹配数量很大的情况,感觉似乎是有点优先选择的意味,也可能理解的根本不是那么回事……我总想,凡是选了的项目,最好还是有点购买数量的好……

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-16 08:22 | 显示全部楼层
aoe1981 发表于 2014-10-15 23:30
  不过,也算是匹配出了一个吧……
  

呵呵……

确定项目以后,我的平衡算法不是有几个参数可选么?你没有仔细看吧。

0. 随机
按顺序写入不超过总额的随机数量。
然后在此基础上进行深度优先的剪枝凑数计算。

1. 直接改动
按需要手工输入最低数量。
然后在此基础上进行深度优先的剪枝凑数计算。

2. 均分调整
按总额/总平均价格得到平均数量。
然后在此基础上进行深度优先的剪枝凑数计算。

点评

还没完,抽空继续啃……多谢……  发表于 2014-10-16 08:28

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-2-3 14:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 13:30 , Processed in 0.038160 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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