ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 数据对比求差异

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-9 09:08 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 38180203 于 2024-5-11 08:14 编辑

QQ五笔截图未命名.png


WPS
两列数据对比。。每组数据为2列组成  
对比的有纯数字。有字母,纯中文组成  因为涉及到有很多重复的一模一样的我们要的是: A组独有  B组独有  AB共同有这三组加起来的条数等于前面AB总条数  差异的标记红色
谢谢

两组数据对比求差异 (1).rar

16.25 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-5-9 09:43 | 显示全部楼层
关键字:join type
GIF 2024-05-09 09-43-07.gif

两组数据对比求差异.zip

21.53 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2024-5-9 09:45 | 显示全部楼层
Sub limonet()
    Dim Cn As Object, StrSQL$
    Set Cn = CreateObject("Adodb.Connection")
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;Hdr=No';Data Source=" & ThisWorkbook.FullName
    StrSQL1 = "Select a.* From [Sheet1$A2:B]a Left Join [Sheet1$D2:E]b On a.F1&a.F2=b.F1&b.F2 Where b.F1&b.F2 is Null"
    StrSQL2 = "Select b.* From [Sheet1$A2:B]a Right Join [Sheet1$D2:E]b On a.F1&a.F2=b.F1&b.F2 Where a.F1&a.F2 is Null"
    StrSQL3 = "Select b.* From [Sheet1$A2:B]a Inner Join [Sheet1$D2:E]b On a.F1&a.F2=b.F1&b.F2"
    Range("G2").CopyFromRecordset Cn.Execute(StrSQL1)
    Range("J2").CopyFromRecordset Cn.Execute(StrSQL2)
    Range("M2").CopyFromRecordset Cn.Execute(StrSQL3)
End Sub

TA的精华主题

TA的得分主题

发表于 2024-5-9 10:37 | 显示全部楼层

两组数据对比求差异.zip

22.4 KB, 下载次数: 24

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-9 10:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-9 10:39 | 显示全部楼层

Option Explicit
Sub TEST9()
    Dim ar, br, i&, j&, r&, dic(1 To 2) As New Dictionary, vKey, iPosCol&
   
    Application.ScreenUpdating = False
    ReDim ar(1 To 2)
    For i = 1 To 2
        ar(i) = Cells(1, (i - 1) * 3 + 1).CurrentRegion.Value
        For j = 2 To UBound(ar(i))
            dic(i)(ar(i)(j, 1) & "," & ar(i)(j, 2)) = Empty
        Next j
    Next i
   
    ReDim br(1 To UBound(ar(1)) + UBound(ar(2)), 1 To 3)
    ReDim ar(1 To 3)
    For i = 1 To UBound(ar)
        ar(i) = br
    Next i
   
   
    For Each vKey In dic(2).Keys
        If dic(1).Exists(vKey) Then
            ar(3)(1, 3) = ar(3)(1, 3) + 1
            ar(3)(ar(3)(1, 3), 1) = Split(vKey, ",")(0)
            ar(3)(ar(3)(1, 3), 2) = Split(vKey, ",")(1)
        Else
            ar(2)(1, 3) = ar(2)(1, 3) + 1
            ar(2)(ar(2)(1, 3), 1) = Split(vKey, ",")(0)
            ar(2)(ar(2)(1, 3), 2) = Split(vKey, ",")(1)
        End If
    Next
        For Each vKey In dic(1).Keys
        If Not dic(2).Exists(vKey) Then
            ar(1)(1, 3) = ar(1)(1, 3) + 1
            ar(1)(ar(1)(1, 3), 1) = Split(vKey, ",")(0)
            ar(1)(ar(1)(1, 3), 2) = Split(vKey, ",")(1)
        End If
    Next
    For j = 1 To UBound(ar)
        iPosCol = (j - 1) * 3 + 7
        Cells(1, iPosCol).CurrentRegion.Offset(1).ClearContents
        Cells(2, iPosCol).Resize(ar(j)(1, 3), 2) = ar(j)
    Next j
   
    Erase dic
    Application.ScreenUpdating = True
    Beep
End Sub

TA的精华主题

TA的得分主题

发表于 2024-5-9 10:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请参考。。。

两组数据对比求差异.rar

19.45 KB, 下载次数: 34

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-9 11:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-9 11:02 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-9 11:08 | 显示全部楼层
本帖最后由 38180203 于 2024-5-9 11:15 编辑

老师您好,,涉及到有很多重复的一模一样的。我们要的是: A组独有  B组独有  AB共同有这三组加起来的条数等于前面AB总条数 QQ五笔截图未命名.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-3 21:12 , Processed in 0.046592 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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