我有2个excel文件,每个文件都包含大量数据。两个文件中的数据结构完全相同,但由于数据来自两个不同的时间,因此值可能已更改。
基本上我想找到一些方法来自动比较两个文件的每个单元格中的值,并突出显示文件#2中已更改值的单元格。
请分享您的想法!
示例:
文件1:
a / 1/2
文件2:
a / 1/8
(/ - 表示新单元格)
答案 0 :(得分:0)
您可以使用此online website - xlcomparator.net(点击右上角的英文版标记)。
或者试试这个软件:http://www.formulasoft.com/excel-compare.html
或尝试这种宏(检查第一列)并根据您的需要进行调整:
sub compare()
Application.ScreenUpdating = False
Dim coll1 As New Collection, coll2 As New Collection
Dim cell1 As Range, cell2 As Range
Dim Element1 As Object, Element2 As Object
Workbooks("workbook1.xls").Activate
For Each Cellule1 In Range("a:a")
coll1.Add cell1
Next Cellule1
Workbooks("workbook2.xls").Activate
For Each cell2 In Range("a:a")
coll2.Add cell2
Next cell2
For Each Element1 In coll1
For Each Element2 In coll2
If Element1 <> Element2 Then
Element1.Font.Color = vbRed
Else
Element1.Font.Color = vbBlack
Exit For
End If
Next Element2
Next Element1
Application.ScreenUpdating = True
end sub
答案 1 :(得分:0)
这可能不是最的有效方法(虽然可以在几秒钟内处理25k个单元格),但它可以简单地弥补它。
这将查看Sheet2中的每个单元格,并将其与您指定的文件的Sheet1中相同地址的单元格中的值进行比较。如果不同,则Sheet2中的单元格将突出显示为黄色。
Sub FindDifferences()
Application.ScreenUpdating = False
Dim cell As Range
Dim wkb1 As Workbook
Dim wks1 As Worksheet
Set wkb1 = Workbooks.Open(Filename:="C:\MyBook.xls")
Set wks1 = wkb1.Worksheets("Sheet1")
For Each cell In ThisWorkbook.Sheets("Sheet2").UsedRange
If cell.Value <> wks1.Cells(cell.Row, cell.Column).Value Then
cell.Interior.Color = vbYellow
End If
Next
wkb1.Close
Application.ScreenUpdating = True
End Sub
注意强>:
您可以通过简单地删除wkb1和wks1变量并将wks1.Cells...
更改为Sheets("Sheet1").Cells
来轻松定制此工具以比较同一文件中的2个工作表...
答案 2 :(得分:0)
另外两个选项:
这是我最喜欢的工具,因为它还提供行和列对齐选项,以确保在运行比较输出代码以突出显示任何差异之前,按行和列对两个工作表进行缩进显示