应用场景:两组数据,多列、多行,要求找出是否存在不一致处。Public Sub 对比数据在同一表格()
k0 = Range("A65536").End(xlUp).Row
For i = 1 To k0
If Cells(i, 1) = "" Then
k = i - 1
Exit For
End If
Next i
For i = k + 1 To k0
If Cells(i, 1) <> "" Then
row_num0 = i - k - 1
Exit For'
End If
Next i
p = Cells(1, 9999).End(xlToLeft).Column
For i = 1 To p
For j = 2 To k
n = j + k + row_num0
If Cells(j, i) <> Cells(n, i) Then
Cells(n, i).Interior.Color = 65535
m = m + 1
End If
Next j
Next i
Cells(2 * k + row_num0 + 2, 1) = "不同处共计:" & m & "处"
End Sub
相关注释见上图
Public Sub 对比数据分在两个表格()
name1 = Application.InputBox(prompt:="请输入待比较的工作表1的名称:", Type:=2)
name2 = Application.InputBox(prompt:="请输入待比较的工作表2的名称:", Type:=2)
Set sh1 = Worksheets(name1)
Set sh2 = Worksheets(name2)
k = sh1.Range("A65536").End(xlUp).Row
p = sh1.Cells(1, 9999).End(xlToLeft).Column
For i = 1 To p
For j = 2 To k
If Trim(sh1.Cells(j, i)) <> Trim(sh2.Cells(j, i)) Then
sh2.Cells(j, i).Interior.Color = 65535
n = n + 1
End If
Next j
Next i
sh2.Cells(k + 2, 1) = "不同处共计:" & n & "处"
End Sub
相关注释见上图,注意type,=1数字类型;=2字符串类型;其余见下图
这时候可以把VBA代码加载到其中一张表格,然后用代码打开另一张表格,并进行工作表的定义。
Set sh1 = ThisWorkbook.Worksheets("sheet1")
Set wkb1 = Workbooks.Open("C:\Users\Administrator\Desktop\对比2.xlsx")
Set sh2 = wkb1.Worksheets("sheet1")
其余代码参照第二组代码
①运用&符号,将数个单元格的数据连成一个字符串,然后进行字符串的查重操作。
示例 =单元格1 & 单元格2 & 单元格3 &……
②当存在不重复数据的列时,如姓名、身份证号等,可用if()及vlookup()组合进行逐行对照。
示例=IF(C14<>VLOOKUP(A14,A2:C5,3,0),1,"")
当返显为1时,表明数据不一致,空白时,数据为一致。