ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何实现对比两表的某列内容后将其中一表的某列内容批量插入?

如何实现对比两表的某列内容后将其中一表的某列内容批量插入?

作者:绿色风 分类: 时间:2022-08-17 浏览:92
楼主
水星钓鱼
Q:如何实现对比两表的某列内容后将其中一表的某列内容批量插入?
A:如图所示,

 对比表一的Part Number和表二的REQ_Part,假如有相同的,则把表二的ALTPARTID插入到相应的表一的Part Number下,其余列的内容复制表一的Part Number的内容。
可以用SQL 的Union 来实现批量插入,代码如下:
  1. Sub xyf()
  2.     Dim oRecrodset
  3.     Dim sConStr As String
  4.     Dim sSql As String
  5.     Dim oWk As Worksheet
  6.     Dim i As Integer
  7.     Set oWk = ThisWorkbook.Worksheets.Add
  8.     Select Case Application.Version
  9.         Case 11
  10.         sConStr = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;IMEX=1;HDR=YES'"
  11.         Case Is >= 12
  12.         sConStr = "Provider='Microsoft.ACE.OLEDB.12.0';Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;IMEX=1;HDR=YES'"
  13.     End Select
  14.       sSql = "select trim(mid(c.[PART NUMBER],instr(1,c.[PART NUMBER],'@')+1,100)) as [PART NUMBER],Manufacturer,Condition,Price,Quantity,Description from" & _
  15.       "(select * from [stock$A:F] union  (select a.[PART NUMBER] + ' @ ' + b.[ALTPARTID] as [PART NUMBER],Manufacturer,Condition,Price,Quantity,Description from [stock$A:F] " & _
  16.       "as a INNER JOIN [sublist$A:C] as b on a.[PART NUMBER]=b.[REQ_Part])) as c"
  17.     Debug.Print sSql
  18.     Set oRecrodset = CreateObject("ADODB.Recordset")
  19.     With oRecrodset
  20.    
  21.         .Open sSql, sConStr
  22.       
  23.         For i = 1 To .Fields.Count
  24.             oWk.Cells(1, i) = .Fields(i - 1).Name
  25.         Next
  26.         oWk.Cells(2, 1).CopyFromRecordset oRecrodset
  27.     End With
  28.     Set oRecrodset = Nothing
  29. End Sub



附件如下:

ADO UNION.rar



2楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap