excel中的一个数据对比提取问题,急
大神们好,
小弟有个问题想请教一下,
有一张excel表,里面有2张sheet,一张是另一张的更新版。
打个比方 表a为最新,数据肯定覆盖表b.
a表
姓名 手机号
张三 1384549xxxx
李四 1567897xxxx
王五 1354578xxxx
b表
姓名 手机号
李四 1567897xxxx
张三 1384549xxxx
我想提取两张表不同的数据,也就是王五 1354578xxxx,且顺序打乱的。不按照顺序,但是相同名字对应的手机是一样的。
数据很多,按列查找。
求vba公式啊,或者有什么可以解决的办法
[解决办法]
既然你发在VBA版中,就给你一段VBA代码吧:
' 在 VBA编辑器 的‘工具’→‘引用’中,引用:
' Microsoft Scripting Runtime
Option Explicit
Private Sub NameDict()
Dim objDict As Object
Dim objShtNew As Worksheet
Dim objShtOld As Worksheet
Dim i&, k&, strTemp$
Set objDict = New Dictionary
' 假设你的‘最新’的名单表是 Sheet1,旧名单表是 Sheet1
' 具体情况,你自己处理
Set objShtNew = Sheets("sheet1")
Set objShtOld = Sheets("sheet2")
' 假设你的‘姓名’是A列,手机号是B列
' 第一行是表头,姓名从第二行开始记录的
k = WorksheetFunction.CountA(objShtOld.Range("A:A"))
For i = 2 To k
objDict.Add objShtOld.Cells(i, 1).Text, vbNullString
Next
k = WorksheetFunction.CountA(objShtNew.Range("A:A"))
For i = 2 To k
strTemp = objShtNew.Cells(i, 1).Text
If Not objDict.Exists(strTemp) Then
' 输出‘新姓名’的行号、姓名、手机号
Debug.Print i, strTemp, objShtNew.Cells(i, 2).Text
End If
Next
objDict.RemoveAll
Set objDict = Nothing
Set objShtNew = Nothing
Set objShtOld = Nothing
End Sub