比较excel文件表格对应数据,标记出不同。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较excel文件表格对应数据,标记出不同。相关的知识,希望对你有一定的参考价值。

比较两个excel表格文件对应内容,标记出不同。两个表格里可能有一些关联的数据需要比对,比如都以编号为索引存储了相应的内容,有一些内容是相同的,但是可能因为种种原因,部分数据产生了错误等等,现在需要标记或更改,这也是例程的所要实现的目的。

测试条件:

  表a文件,表b文件。两个文件都存储了以"行编号"为索引的相应内容。现在需要自动核对两个表中对应编号下的相应内容,标记出不同。

  示例内容如下图所示:

技术分享

技术分享

  VB代码如下:

‘表1
Dim scxls As Excel.Application
Dim scbook As Excel.Workbook
Dim scsheet As Excel.Worksheet
Dim celltext As String
‘表2
Dim scxls2 As Excel.Application
Dim scbook2 As Excel.Workbook
Dim scsheet2 As Excel.Worksheet
Dim celltext2 As String


Private Sub Command1_Click()
    ‘表1
    Set scxls = CreateObject("excel.application")
    Set scbook = scxls.Workbooks.Open("C:\Users\Administrator\Desktop\test\a.xlsx")
    Set scsheet = scbook.Worksheets(1)
    ‘表2
    Set scxls2 = CreateObject("excel.application")
    Set scbook2 = scxls2.Workbooks.Open("C:\Users\Administrator\Desktop\test\b.xlsx")
    Set scsheet2 = scbook2.Worksheets(1)
    Dim tmpstr As String
    Dim tmpstr2 As String
    Dim i As Integer
    Dim Row As Integer
    For i = 1 To 25
        With scsheet2.Range("a1:a25")   ‘表2,编号所在列
            tmpstr = Trim(scsheet.Cells(i, 1))
            If (Len(tmpstr) <> 3) Then GoTo continue    ‘校验编号长度,当前长度为3
            Set tar = .Find(tmpstr)
            If Not tar Is Nothing Then
                firstAddress = tar.Address
                Do
                    tmpstr2 = tar.Address(RowAbsolute:=False)
                    tmpstr2 = Mid(tmpstr2, 3)
                    Row = Val(tmpstr2)
                    ‘如果编号索引的表2第3列,和表1第2列不相同,标记表2数据。
                    If (scsheet2.Cells(Row, 3) <> scsheet.Cells(i, 2)) Then
                        ‘scsheet2.Cells(Row, 3) = scsheet.Cells(i, 2)
                        scsheet.Cells(i, 2).Interior.Color = RGB(34, 177, 76)      ‘标记表1
                        scsheet2.Cells(Row, 3).Interior.Color = RGB(237, 28, 36)    ‘标记表2
                        Debug.Print "表2:" & scsheet2.Cells(Row, 3).Address
                    End If
                    ‘如果编号索引的表2第5列,和表1第3列不相同,标记表2数据。
                    If (scsheet2.Cells(Row, 5) <> scsheet.Cells(i, 3)) Then
                        ‘scsheet2.Cells(Row, 5) = scsheet.Cells(i, 3)    ‘将表2数据与表1数据同步
                        scsheet.Cells(i, 3).Interior.Color = RGB(34, 177, 76)      ‘标记表1
                        scsheet2.Cells(Row, 5).Interior.Color = RGB(237, 28, 36)    ‘标记表2
                        Debug.Print "表2:" & scsheet2.Cells(Row, 5).Address
                    End If
                    Set tar = .FindNext(tar)
                Loop While Not tar Is Nothing And tar.Address <> firstAddress
            End If
continue:
        End With
    Next
    For Each w In scxls.Workbooks
        w.Save
    Next w
    For Each w In scxls2.Workbooks
        w.Save
    Next w
    scxls.Quit
    scxls2.Quit
    Set scbook = Nothing
    Set scxls = Nothing
    Set scbook2 = Nothing
    Set scxls2 = Nothing
End Sub

Private Sub Command2_Click()
    End
End Sub

执行结果图:

技术分享


技术分享

技术分享

应用说明:

  1.这是一个简单例程,实际应用中可能需要变更才能使用。

  2.本例程中,对应的列数据是手动指定的,但是如果存在栏位名,这些完全也可以自动指定。如上所说,这只是一    个简单的例程,仅供参考,并不一定能实际应用。

备注:

  1.作者其实并不会VB编程。只是帮朋友忙,做了个简单测试,让行家见笑了。


本文出自 “firswof” 博客,请务必保留此出处http://firswof.blog.51cto.com/9362961/1874860

以上是关于比较excel文件表格对应数据,标记出不同。的主要内容,如果未能解决你的问题,请参考以下文章

excel表格利用公式标注颜色的教程

EXCEL打开是一片空白,要从开始选择文件才能打开表格,请问大神们如何修复才能直接打开表格呢?

怎样用Beyond Compare比较两个excel表格文件差异

不同工作簿怎么合并 excel合并表格数据

WPS两列数据对比进行标记

帆软报表怎么连接几个不同的excel表格