当前位置:首页>java>两组数据对比:VBA代码

两组数据对比:VBA代码

  • 2026-08-23 05:23:59
两组数据对比:VBA代码
应用场景:两组数据,多列、多行,要求找出是否存在不一致处。
一、两组数据存在一张表格

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")

其余代码参照第二组代码

四、除VBA外的其他解决方案
    1、查找重复值,仅适用于数据本身不存在重复性。
        首先选择要查重的数据,然后进行以下操作:
    2、公式方法:      

  ①运用&符号,将数个单元格的数据连成一个字符串,然后进行字符串的查重操作。

   示例 =单元格1 & 单元格2 & 单元格3 &……

  ②当存在不重复数据的列时,如姓名、身份证号等,可用if()及vlookup()组合进行逐行对照。

 示例=IF(C14<>VLOOKUP(A14,A2:C5,3,0),1,"")

当返显为1时,表明数据不一致,空白时,数据为一致。

最新文章

随机文章