ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Excel VBA 如何比较两个工作表的指定列,然后合并成新工作表

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-23 22:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
魂断蓝桥 发表于 2017-1-19 14:46
Sub a()
Dim arr, brr, d, d1, s$, s1$, rng As Range, r%
Set d = CreateObject("Scripting.Dictionary" ...

我把代码放在MODULE1里运行,没反应,抱歉,我对VBA比较陌生,请在附件里测试并上传可以吗?非常感觉谢。

TA的精华主题

TA的得分主题

发表于 2017-1-24 08:56 | 显示全部楼层
Container list(1).rar (394.17 KB, 下载次数: 16)

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-15 17:21 | 显示全部楼层

辛苦了,您目前这个实现了单Material中单Size的查询,原表里一个Material和size是一对多的情况,我需要把多个Size都能查询出来,可否烦请您再改进!非常感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-15 17:25 | 显示全部楼层

最简单的办法:您帮我实现data和dowd两个表格按我标题的要求进行合并,合并结果如同Data,覆盖Data或生成新表都可以,查询方面我用函数已经可以实现了。

TA的精华主题

TA的得分主题

发表于 2017-2-16 12:58 | 显示全部楼层
蜀山^剑客 发表于 2017-2-15 17:25
最简单的办法:您帮我实现data和dowd两个表格按我标题的要求进行合并,合并结果如同Data,覆盖Data或生成 ...

data表

Material  number
Container number
Container Size
600001
11303
500


Dowd 表
Material  number
Container number
Container Size
600001
11303
789

1、这样需要更新data表size 数据,也就是说 Material  number &  Container number 肯定是唯一值?
2、会不会有这种情况

dowd表中 这种情况
Material  number
Container number
Container Size
600001
789


TA的精华主题

TA的得分主题

发表于 2017-2-16 14:15 | 显示全部楼层
On Error Resume Next
Sheets("newdata").Delete
On Error GoTo 0
Dim cnn As Object, r1%, r2%
Dim Sql As String
Sheets.Add after:=Sheets(Sheets.Count)
Sheet2.Cells.Copy ActiveSheet.[a1]
ActiveSheet.Name = "newdata"
r1 = Cells(Rows.Count, 1).End(3).Row
r2 = Sheets("Dowd").Cells(Rows.Count, 1).End(3).Row
Set cnn = CreateObject("ADODB.CONNECTION")
Application.ScreenUpdating = False
cnn.Open "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties='Excel 12.0;HDR=YES'; Data Source=" & ThisWorkbook.FullName
Sql = "update [newdata$a1:c" & r1 & "] A,[Excel 12.0;Database=" & ActiveWorkbook.FullName & "].[Dowd$a1:m" & r2 & "] B" _
        & " SET A.[Container Size]=B.[Container Size] WHERE A.[Material number]=B.[Material number] AND A.[Container number]=B.[Container number]"
cnn.Execute (Sql)
Sql = "select a.[Material number],a.[Container number],a.[Container Size] from [Dowd$a1:m" & r2 & "] a" _
    & " left join [Date$a1:c" & r1 & "] b " _
    & " on A.[Material number]=B.[Material number] AND A.[Container number]=B.[Container number] " _
    & " where b.[Container Size] is null"
[a1].Offset(r1).CopyFromRecordset cnn.Execute(Sql)
Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-17 07:26 | 显示全部楼层

Dowd表里一定不会有空值,因为这个文件主要就是通过Mateiral查询 container和Size,问题就是container和Size经常变动,所以我做了个中间表Data,每次用原始数据Dowd表来更新,保证Dowd里container和size有更改或有新增的mateiral,Data表能得到相应更新,但Dowd表如果有删除,Data表里不能被删掉(这也是做中间Data表的关鍵)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-17 07:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
魂断蓝桥 发表于 2017-2-16 14:15
On Error Resume Next
Sheets("newdata").Delete
On Error GoTo 0

谢谢!我更新一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-17 11:36 | 显示全部楼层
本帖最后由 蜀山^剑客 于 2017-2-17 11:43 编辑
魂断蓝桥 发表于 2017-2-16 14:15
On Error Resume Next
Sheets("newdata").Delete
On Error GoTo 0

您的代码是大神级作品,必须最强!

只是我对要求描述的不清楚,结合您这次做的代码,我做如下全面要求描述:

a,如果NewData里没有的“Mateiral Number”,需要从Dload表里添加Mateiral number及与之对应的Size和Container Number到NewData表里来;
b,NewData表有“mateiral Number”,但没有与Dlowd表对应“Container Size”和"Container Number"的,也要添加进NewData表;
c,NewData表里有"mateiral number",也有对应"Size",但"Container number"不同的,要从Dload里更新到NewData里;
d,NewData里这三个列都有的,保持在NewData表里不变;
e,NewData里有,但Dload里没有的,保持在NewData表里不变。


总之,NewData就是要记录所有使用过Mateiral,size,container的记录,并保持与Dlowd现有信息的更新;



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

本版积分规则

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

GMT+8, 2024-3-29 08:45 , Processed in 0.054942 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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