比较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打开是一片空白,要从开始选择文件才能打开表格,请问大神们如何修复才能直接打开表格呢?