ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助][难题]抽掉一些数据,使两列的和相等

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-11 08:33 | 显示全部楼层

结果我是求出来了,

就是怎么用到函数, 是个笨方法

方法是这样的

 两列之差的尾数来抽取数字, 例如刚开始两列的差为-1338526.61

那么我先抽掉C47的20230.61  和H21  H28  H59    H64 

这样小数部分就没有了,

接着就根据两列差的情况抽从H 列抽取尾数为7或者尾数和为7 的数据,

以此类推,当然不可能只抽H列数据,抽到后面会出现两列的差为整数,但是H列能抽得整数很少,

那么 还要从C列抽掉一些数据   使两列的能够从H列找到

TA的精华主题

TA的得分主题

发表于 2008-5-11 13:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

呵呵,你怎么知道你的算法求出来的就是最大值???

我求得的结果是 : 2153137.88

 复合用了几个方法(包括你说的去掉小数,规划求解,再加多项式展开)

得到这样的结果其实也是有点运气

楼主还是说一下两列数据都是怎么来的,是不是一定有对应的最大值

Eph972mo.rar (10.59 KB, 下载次数: 30)
[此贴子已经被作者于2008-5-12 2:02:52编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-11 14:10 | 显示全部楼层

辛苦你了,

我还是想知道中间的方法, 不知道可否讲讲

数据一组是发票  一组是银行进帐单,做帐用,

这个最大值其实也是未知的

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-11 14:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-5-11 23:55 | 显示全部楼层

第一步:是先去掉 20230.61, 因为没有任何数据可以组合出0.01的尾数,所以可以肯定20230.61不可能出现在结果当中

第二步:用规划求解求G列的数据组合,要求取最接近C列总和的最大值,发现得到的结果只比C列最大值少1

第三步:看看G列还没有选中的数据,能不能组合出刚好比 已经选中的数据大1 的结果

这一步可以用规划求解,逐一把已经选中的数据+1(设为数组Y)作为求解目标,不过这样比较慢。

由于剩下数据不多,所以我是用多项式展开做的,把剩下的数据去掉明显不合要求的,然后展开多项式 (1+x^???)*(1+x^???)......

这样的展开式就包含了所有数据组合结果了,我在展开式的结果中逐一查找有没有等于数组Y的数值即可,刚好找到一个,所以就做出来了

其实如果数据复杂的话,第一步和第三步都不一定走得通,所以说有点运气了

这个附件更清晰地说明了如何多次规划求解,求得最大值是一样的,不过数据组合不一样,实际上有可能求得多个合要求的数据组合

  0IiWiWXs.rar (11.45 KB, 下载次数: 21)

我的做法也不是很方便,主要是Excel的规划求解不是很聪明,有时间试一下Lingo做看看会不会好一点

这里是以前一个做财务的朋友问过类似问题

http://club.excelhome.net/viewthread.php?tid=316017&px=0

这里是学习规划求解最基础的一个贴,其他难一点的贴可以搜索论坛

http://club.excelhome.net/dispbbs.asp?boardid=1&replyid=506555&id=93606&page=1&skin=0&Star=1


[此贴子已经被作者于2008-5-12 2:05:12编辑过]

TA的精华主题

TA的得分主题

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

WOW! Lingo果然比Excel的规划求解强大好多

1: 去掉20230.61后,Lingo只用了3秒就直接求出2153137.88的G列数据组合结果

2: 去掉20230.61后,Lingo可以同时处理两列数据找最大值,用了27秒得到2153137.88的结果

3: 不去掉20230.61的话,Lingo花了20分钟都还没有得到答案,估计这辈子也找不到答案了。看来预先分析一下数据还是很有必要的,要是多十几个带小数的数据,那可就麻烦大了

[此贴子已经被作者于2008-5-12 4:07:47编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-13 10:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
恩,不知道此题的目的,也许所谓的 相等 在实际中只要相近也说不定呢,呵呵。那样多加一个条件 把相近表达出来就行了。

TA的精华主题

TA的得分主题

发表于 2008-5-13 12:56 | 显示全部楼层

抽掉一些数据,使两列的和相等

根本就是VBA的超级大难题

 

用函数及其它办法, 应不可行

TA的精华主题

TA的得分主题

发表于 2008-5-13 22:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
运算量极大吧。1到列个数的组合数的和,和另一列的组合数 的 和对比,找到最大的相等的和。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-14 21:25 | 显示全部楼层

Lingo 是什么?

软件?

不是

此题的目的是求两列的和在抽掉其中的一些数后相等, 而不是近似

思路就像  灰袍法师

不过他的方法我看不太懂

我自己是肉眼观察的, 根据尾数的变化来决定抽哪个数

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 18:08 , Processed in 0.029627 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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