ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据比较的VB求教,急

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-29 22:26 | 显示全部楼层 |阅读模式
各位大神,小弟有一系列的数据,数据每天都有部分更新,我想各位大神帮我比较表一和表二的数据,如果表二数据和表一的一样,则在表二中显示OK,不一样的粘贴到表三。

数据比较模板1.zip

802.17 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2017-5-30 07:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-5-30 07:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
先留个名,待会来看看

TA的精华主题

TA的得分主题

发表于 2017-5-30 08:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 yeminqiang 于 2017-5-30 08:33 编辑
  1. Sub cdsr()
  2.     Dim cnn As Object, rs As Object, rs1 As Object, i&, SQL$, SQL1$
  3.     Set cnn = CreateObject("ADODB.Connection")
  4.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties ='Excel 8.0;hdr=no';Data Source =" & ThisWorkbook.FullName
  5.     SQL = "select a.f1,a.f2,b.f2,iif(isnull(b.f2),'','OK') from [表2$] a left join [表1$] b on a.f1=b.f1 and a.f2=b.f2"
  6.     SQL1 = "select f1,f2 from (select a.f1,a.f2,b.f2 as f3 from [表2$] a left join [表1$] b on a.f1=b.f1 and a.f2=b.f2) where f3 is null"
  7.     Set rs = cnn.Execute(SQL)
  8.     With Sheet2
  9.         .Range("h1:j65535").ClearContents
  10.         .Range("h1").CopyFromRecordset rs
  11.     End With
  12.        Set rs1 = cnn.Execute(SQL1)
  13.     With Sheet5
  14.         .Range("a1:b65535").ClearContents
  15.         .Range("a1").CopyFromRecordset rs1
  16.     End With
  17.     rs.Close
  18.     rs1.Close
  19.     cnn.Close
  20.     Set rs = Nothing
  21.     Set rs1 = Nothing
  22.     Set cnn = Nothing
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-5-30 19:09 | 显示全部楼层
  1. Sub SRP()
  2.    Dim sht1, sht2, i, j, dic1, dic2, sht22(1 To 40000, 1 To 2), t As Date
  3.     sht1 = Worksheets("表1").Range("a1").CurrentRegion
  4.     sht2 = Worksheets("表2").Range("a1").CurrentRegion
  5.     Set dic1 = CreateObject("scripting.dictionary")
  6.     Set dic2 = CreateObject("scripting.dictionary")
  7.     Range("c:c").ClearContents
  8.    
  9.         For i = 1 To UBound(sht2)
  10.             dic1(sht2(i, 1) & "     " & sht2(i, 2)) = "" '添加ab列数据至数组keys中
  11.         Next
  12.         
  13.         For i = 1 To UBound(sht1)
  14.             dic2(sht1(i, 1) & sht1(i, 2)) = "" '添加ab列数据至数组keys中
  15.         Next
  16.         
  17.         For i = 1 To UBound(sht2)
  18.         
  19.             If dic2.exists(sht2(i, 1) & "     " & sht2(i, 2)) Then '反向查找数组中是否有这个值
  20.                 sht2(i, 1) = "OK"
  21.             Else
  22.                 sht2(i, 1) = "表1没有"
  23.                 n = n + 1 '注意这里很重要,没有这个反写数据的时候无法按顺序反写
  24.                 For j = 1 To 2
  25.                     sht22(n, j) = Worksheets("表2").Cells(i, j)
  26.                 Next
  27.             End If
  28.         Next
  29.         
  30.         Range("c1").Resize(UBound(sht2)) = sht2
  31.         Worksheets("表3").Range("a1").Resize(UBound(sht22), 2) = sht22
  32.         
  33.         Erase sht1, sht2, sht22

  34. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-1 10:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-7 12:07 | 显示全部楼层

大神,你好,还要麻烦下你,能不能帮再次我修改下,变成,如果表二的列三数据大于表一的数据,显示“价格上调”,如果小于则显示“价格下降”。复制到表三的时候,能否把表一的数据在旁边显示,谢谢!

SRP数据比较模板.zip

843.21 KB, 下载次数: 0

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-6-17 13:28 , Processed in 0.030372 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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