ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创][分享]双表核对工具(最新更新 提速+多列)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-29 02:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 jcrs 于 2009-7-28 20:51 发表
对比结果出错,我传了附件,请老师参考!


仔细看了一下你上传的附件,你94楼附件中的【源表】中第二行与第三行数据为:
序号          物资编码                           计划编号
1        060102029000074679/        109-07-XF001-2009
2        140502080000021633/        109-07-XF001-2009

其中,你在95楼附件中工具设置为  关联列为“计划编号”,对照列为“物资编码
而上面源表中,如果仅仅以“计划编号”字段为关键字的话,你的源表中第二行与第三行就是重复记录,而且这两个重复记录对应的 对照列(也就是“物资编码”字段)是不一样的,这就是工具处理结果与你期望的结果不符的原因。

本工具的工作流程是:
源表中顺序读出一条记录,和待更新表中的记录按 “关联列” 顺序对比,如果各“关联列”都一样,则依次对比这两条记录的各“对照列”,并把待更新表对照列更新为源表中的对照列。完成这些更新后,如果设定了待更新表无重复记录的话,回到源表读下一条记录,否则一直将待更新表一条一条的对比完。

由上面的流程,可以发现,由于你的源表中存在重复记录,所以对于你的待更新表中的同一条记录可能会被更新数次,这可以在你95楼附件中 表一 第4行到第7行反映出来,待更新表中第4行与第5行被更新了2次。回到你的源表中可以发现 计划编号为:109-07-XF002-2009 的记录有两条(第4行,第5行),而且这两条记录对应的 物资编码 是不一样的。

如果你的源表无法做到可以按关联列唯一确定一条记录的话,这个工具可能并不能解决你的问题。

[ 本帖最后由 Moneky 于 2009-7-29 12:20 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-7-29 08:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
真是牛人
收藏了备用
谢谢

TA的精华主题

TA的得分主题

发表于 2009-7-29 13:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-29 17:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个东东应该很好,谢谢分享。

TA的精华主题

TA的得分主题

发表于 2009-7-29 22:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-30 13:34 | 显示全部楼层

回复 97楼 Moneky 的帖子

Monedy老师很敬佩您的高超的技术和认真求实的态度,同时再次感谢您开发双表核对工具,真的非常好.
就像您所说的如果"源表无法做到可以按关联列唯一确定一条记录的话,这个工具可能并不能解决你的问题。"关于这样的表说说我的看法,请老师参考:
首先源表不能按关联列唯一确定的表在实际工作中可能少但是存在的!
其次如果您的工具能核对这样的表,我认为更完善,也就是说如果能核对这样的表可能很多表都能准确的核对出准确的结果
我从手工核对中总结的经验,我认为有更合理的对比流程,因为我不懂编程,可能有偏颇,下面我说一下对比流程包括一列或多列做关联列,请老师参考大家一起讨论:
从待更新表中顺序读出一条记录,和源表中的记录按"关联列"顺序对比,如果各"关联列"都一样,则依次对比这两条记录的各"对照列",| | 如果"对照列"中的第一列不同,则在关联列相同的区域内继续查找,在找到的行中顺序对比下一个关照列的记录,如果相同在源表该列标记,该行不参与下次对比, ||如果找不到相同记录,则把待更新表中对照列更新为源表中的对照列。完成这些更新后,回到待更新表读下一条记录.直到待更新表的所有记录对比结束,检查源表未记记录,表示待更新表缺项,如果待更新表的关联记录在源表中找不到,则表示待更新表中多项.
我认为这个流程即把您工具原来的目的实现了同时也可以把源表不能按关联列唯一确定的表核对准确了.
请老师看看我说的流程用程序的可行性,当然可能不合理有漏洞,还请老师直接指出来,如果可行还垦请老师在百忙之中抽时间来完善.多谢了!
附:
本工具的工作流程是:
从源表中顺序读出一条记录,和待更新表中的记录按 “关联列” 顺序对比,如果各“关联列”都一样,则依次对比这两条记录的各“对照列”,并完成这些更新后,如果设定了待更新表中无重复记录的话,回到源表读下一条记录,否则一直将待更新表一条一条的对比完。

TA的精华主题

TA的得分主题

发表于 2009-7-30 15:55 | 显示全部楼层

回复 1楼 Moneky 的帖子

谢谢!........................

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-30 22:29 | 显示全部楼层
回复jcrs
看到了你的描述,说实话看得不是很明白。从已经了解的信息看来,你的需求和现在工具有些不同之处,最大的区别是:
你的流程中其实两个表都需要更改;而这个工具是将源表作为标准来更新待更新表,同时源表作为一个标准表,其中不允许存在以各关联列为“主键”而重复的记录。
至于你的需求,vba能够搞定是肯定的。不过本人现在没有精力和时间,因为刚刚失业了,现在即将去另外一个城市找工作,下午刚刚把电脑以废品价处理了,现在用手机上的网。
你可以重新开个主题贴,在一个表格中一步一步的把你的需求描述出来,应该有很多的大虾会乐意帮你的。

[ 本帖最后由 Moneky 于 2009-8-4 16:54 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-7-30 23:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-7-31 00:03 | 显示全部楼层

回复105楼的朋友:

多谢你的回复!
怎么看你的帖子里说你有个新工作呀,这么快又想换工作,祝你一切顺利,如果能帮上你多好,呵呵,心有余力不足,只能初愿你早点稳定下来!希望我们成为朋友!

[ 本帖最后由 jcrs 于 2009-7-31 00:04 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 18:08 , Processed in 0.043269 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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