ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 终极武器 : 解决无记认凭证的对账(多张发票凑数字凑金额) - 需要装Lingo软件

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-1-24 22:23 | 显示全部楼层 |阅读模式
本帖最后由 灰袍法师 于 2012-6-3 18:40 编辑

问题的定义:
1 有一堆发票,无法区分来源,要求从中找出若干张发票,其金额总和等于指定数额。 (求多种组合的方法补充在18楼)
2 有A,B两堆发票,要求找出若干张A发票,若干张B发票,要求A发票的金额总和等于B发票的金额总和,而且此金额越大越好。

问题的解决:
附件使用Excel工作簿存储发票数据。
然后调用运筹学软件 Lingo 求解,最后把求解结果放回Excel工作簿,用户的全部操作就是粘贴原始数据,然后点击一下按钮

运行前需要下载,安装,破解 Lingo 软件
Lingo的下载:eMule 搜索 Lingo8 Full Version.rar, 本人长期上传此文件,不必担心没源。 当然如果你搜索到别的更新更好的Lingo版本,也可以用的。
Windows7 必须安装 Lingo 11.0, 也已经有破解了,本Excel附件仍然可用。
CSDN下载中心绝对有各种版本的Lingo下载,不过要注册用户。

常见问题及其解决方法
1. 对于部分筒子反映必须把.xls放在Lingo文件夹才能正常使用,我估计是.xls文件的D4单元格所致,把里面的自动计算文件名的公式删除,输入这个附件的文件名即可解决。我已经修改后重新上传。
2. 绝对不要用绿色版免安装版的lingo,必须要完整安装的才能实现 excel_lingo 之间的自动化。
3. 把Lingo语句复制到Lingo软件里面执行,就不会在运行期间导致Excel不能用,也不会在运行时间太长的时候,Excel等待超时无法接受求解结果。
4. 需要求解超过1000数据的,自己修改一下excel工作表的名称定义,把数据区域设置为更大即可,注意要全部名称都改,不能只改一个。又,数据太多的话,求解速度明显变慢,自己掌握吧。

附件的使用:
解决1型问题,非常简单,而且速度会很快,一般不超过 10秒 。(当然,碰到极端困难的数据也将需要几个小时)
把A发票数据放在数据清单1,最多1000张发票,不足1000张发票的,其余数据请输入0
把指定的求和金额放在数据清单2,把数据清单2的其余数据设为0
点击求解按钮即可。

解决2型问题,非常复杂,而且速度很难预计,如果找不到解,请 减少 一些明显不合要求的数据再次尝试。
把A发票数据放在数据清单1,最多1000张发票,不足1000张发票的,其余数据请输入0
把B发票数据放在数据清单2,最多只能也处理1000张发票,不足1000张发票的,其余数据请输入0
然后点击求解按钮即可。

附件的工作表 "Lingo模型" 里面放的就是Lingo语言定义的求解程序,求解速度跟Excel的规划求解相比,快得不可思议。

附:求接近值而不是精确的相等值的方法
要做到这一点,需要修改Lingo模型工作表里面的语句
@SUM(Data_List1(i): Data1(i) * Flag1(i)) = @SUM(Data_List2(i): Data2(i) * Flag2(i)) ;

这一句是要求左列的选择数据和等于右列选择数据和, 改为
@SUM(Data_List1(i): Data1(i) * Flag1(i)) <= @SUM(Data_List2(i): Data2(i) * Flag2(i)) ;
即把等号改为小于等于号

然后在下一行增加一句语句(不加这一句,求解模型也是正确的,但偶尔会明明有解都出现无解,原因不明)
@SUM(Data_List1(i): Data1(i) * Flag1(i)) >= @SUM(Data_List2(i): Data2(i) * Flag2(i)) - 100;
这个100就是你要求有多接近,太小则可能无解,太高可能得不到最佳值,建议先用比较大的数值,然后逐渐减少。

最好备份一下再修改,所有语句都应该用文本格式,也接受Excel公式生成的字符串。

[ 本帖最后由 灰袍法师 于 2011-3-13 17:31 编辑 ]




补充内容 (2013-12-2 15:38):
同时建议到此贴 http://club.excelhome.net/thread-688274-1-1.html  不需要装Lingo的VBA解决方法

补充内容 (2014-1-3 17:50):
强烈推荐 香川群子 的贴,不需装Lingo 也能用VBA求解,速度还很快,必须下载!
2014新年元旦第一强帖:实用凑数凑金额高效递归剪枝算法
http://club.excelhome.net/thread-1085112-1-1.html

双列数据求最大值匹配 - Excel内嵌Lingo.rar

31.93 KB, 下载次数: 2052

用Lingo求解多张发票的对账问题

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-1-25 10:43 | 显示全部楼层
实在太好了,严重支持


试运行了一下,处理1型问题时出现错误,请法师指点

lingo1.GIF

lingo2.GIF

[ 本帖最后由 xpm130 于 2009-1-25 11:26 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-1-25 10:50 | 显示全部楼层
法力高强,该是白袍了

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-1-25 23:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
2楼的错误应该是还没有破解Lingo, 所以一运行就出错。

破解的方法我补充了在顶楼,再试试看吧。

Lingo软件的一个中国代理商的网站,可以下载试用版
http://www.sciencesoftware.com.c ... detail12.asp?id=157

Lingo的官方主页,可以下载试用版
http://www.lindo.com/

[ 本帖最后由 灰袍法师 于 2009-1-26 16:46 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-1-26 10:42 | 显示全部楼层
Lingo的破解:Lingo目前似乎只有v8.0版有完美破解,破解方法是把 破解后的 lindolm,dll 覆盖同名的安装文件
要注意的是,lindolm.dll 在三个目录都存在,需要全部覆盖才算破解成功
c:\windows;  c:\windows\system32; c:\program files\Lingo

我安的是带注册码的8.0版,安在D盘上的.
不知如何破解呀.
老师的文件一定要与破解版的lingo对接吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-1-26 16:38 | 显示全部楼层
光有注册码是不行的

注册码只能通过安装,运行的时候还是要检查 lindolm.dll的

没破解的Lingo只能处理50个变量,基本上是毫无用处。

你要把这个破解文件复制到我说的三个目录才行。

lindolm.rar

31.9 KB, 下载次数: 605

TA的精华主题

TA的得分主题

发表于 2009-1-26 19:34 | 显示全部楼层
牛年伊始,牛气十足,牛运亨通,今天得到法师的赐教,我非常非常的高兴!

大家一路牛气,好事接二连三,人人四季平安,前景五颜六色,
生活七彩缤纷,关注八方世事,烦恼九霄抛尽,家庭十分和美。

TA的精华主题

TA的得分主题

发表于 2009-1-29 14:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
太强了..谢谢啦:)

TA的精华主题

TA的得分主题

发表于 2009-1-29 14:57 | 显示全部楼层

如果有出现多个解的情况呢??

法师,我试验了一下,的确是非常的快
但是每次解出都只有一个解....而我印象中,有时一个总值往往会有很多个解.......多解的情况.
不知道如何才能在excel种体现出多个解呢??
谢谢:)

TA的精华主题

TA的得分主题

发表于 2009-1-29 15:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Lingo8 Full Version.rar及那个DLL文件
也传上来算了,又要装电骡,多麻烦
谢谢
并祝新年快乐,
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 17:53 , Processed in 0.042524 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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