Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 878|回复: 7

[已解决]sheet1明细匹配sheet2拆解结果写入sheet3

[复制链接]
发表于 2022-12-19 13:47 | 显示全部楼层 |阅读模式
2学分
各位大神:在统计数据的时候需要实现下面这样的结果:1.将sheet1的明细匹配sheet2进行拆解;2.若匹配sheet2时无对应明细,则在sheet3的J~L列不填写对应数据;3.若匹配sheet2时有2条以上明细时,则在sheet3里将sheet1明细拆成多行,分别写上对应的数据。没找到对应的代码,望各位有经验的多多指教。万分感谢!
最佳答案
2022-12-19 13:47
Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.oledb.12.0;Extended Properties=Excel 12.0;data source=" & ThisWorkbook.FullName
   Sql = "SELECT a.*,b.供应商编码,b.供应商简称,b.业务员 FROM [Sheet1$A2:I] a left join [Sheet2$] b on a.物料编码 = b.存货编号 and a.规格型号 = b.规格型号"
   Set rs = conn.Execute(Sql)
   Sheets(3).UsedRange.Offset(1).ClearContents
   Sheets(3).[a2].CopyFromRecordset rs
End Sub

sheet1明细匹配sheet2拆解结果写入sheet3.rar

20.72 KB, 下载次数: 11

最佳答案

查看完整内容

Sub demo() Set conn = CreateObject("ADODB.Connection") conn.Open "provider=Microsoft.Ace.oledb.12.0;Extended Properties=Excel 12.0;data source=" & ThisWorkbook.FullName Sql = "SELECT a.*,b.供应商编码,b.供应商简称,b.业务员 FROM [Sheet1$A2:I] a left join [Sheet2$] b on a.物料编码 = b.存货编号 and a.规格型号 = b.规格型号" Set rs = conn.Execute(Sql) Sheets(3).UsedRange.Offset(1).Cl ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-12-19 13:47 | 显示全部楼层    本楼为最佳答案   
Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.oledb.12.0;Extended Properties=Excel 12.0;data source=" & ThisWorkbook.FullName
   Sql = "SELECT a.*,b.供应商编码,b.供应商简称,b.业务员 FROM [Sheet1$A2:I] a left join [Sheet2$] b on a.物料编码 = b.存货编号 and a.规格型号 = b.规格型号"
   Set rs = conn.Execute(Sql)
   Sheets(3).UsedRange.Offset(1).ClearContents
   Sheets(3).[a2].CopyFromRecordset rs
End Sub

回复

使用道具 举报

 楼主| 发表于 2022-12-19 14:51 | 显示全部楼层
cutecpu 发表于 2022-12-19 14:44
Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.ole ...

再次麻烦您了!非常感谢!

点评

不客氣喔~  发表于 2022-12-19 14:51
回复

使用道具 举报

 楼主| 发表于 2022-12-19 15:13 | 显示全部楼层
cutecpu 发表于 2022-12-19 14:44
Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.ole ...

再请教一下,如果想要sheet3只取sheet1里的几个字段,代码应该如何改呢?麻烦啦!

sheet1明细匹配sheet2拆解结果写入sheet3-2.zip

22.06 KB, 下载次数: 9

回复

使用道具 举报

发表于 2022-12-19 15:32 | 显示全部楼层
su77 发表于 2022-12-19 15:13
再请教一下,如果想要sheet3只取sheet1里的几个字段,代码应该如何改呢?麻烦啦!

Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.oledb.12.0;Extended Properties=Excel 12.0;data source=" & ThisWorkbook.FullName
   Sql = "SELECT a.物料编码,a.规格型号,a.物料名称,a.需求数量,b.供应商编码,b.供应商简称,b.业务员 FROM [Sheet1$A2:I] a left join [Sheet2$] b on a.物料编码 = b.存货编号 and a.规格型号 = b.规格型号"
   Set rs = conn.Execute(Sql)
   Sheets(3).UsedRange.Offset(1).ClearContents
   Sheets(3).[a2].CopyFromRecordset rs
End Sub

回复

使用道具 举报

 楼主| 发表于 2022-12-19 15:35 | 显示全部楼层
cutecpu 发表于 2022-12-19 15:32
Sub demo()
   Set conn = CreateObject("ADODB.Connection")
   conn.Open "provider=Microsoft.Ace.o ...

明白了!谢谢啦!

点评

不客氣喔~  发表于 2022-12-19 15:37
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-25 22:59 , Processed in 0.237468 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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