用VBA写一个对比表格的代码
时间: 2023-10-17 20:05:13 浏览: 152
比较任意两个excel的内容,VBA编写
3星 · 编辑精心推荐
下面是一个简单的 VBA 代码,可以用于比较两个表格中的数据,并将它们的差异显示在一个新的表格中:
```
Sub CompareTables()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim lastRow As Long, lastCol As Long
Dim i As Long, j As Long, k As Long
'设置需要比较的表格
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set ws3 = Worksheets("Sheet3")
'获取表格1和表格2的最后一行和最后一列
lastRow = Application.WorksheetFunction.Max(ws1.Cells(Rows.Count, 1).End(xlUp).Row, _
ws2.Cells(Rows.Count, 1).End(xlUp).Row)
lastCol = Application.WorksheetFunction.Max(ws1.Cells(1, Columns.Count).End(xlToLeft).Column, _
ws2.Cells(1, Columns.Count).End(xlToLeft).Column)
'在表格3中创建一个标题行
ws3.Cells(1, 1).Value = "Row"
ws3.Cells(1, 2).Value = "Column"
ws3.Cells(1, 3).Value = "Sheet1"
ws3.Cells(1, 4).Value = "Sheet2"
k = 2 '用于记录表格3的行数
'比较表格1和表格2中的数据,并将差异记录在表格3中
For i = 1 To lastRow
For j = 1 To lastCol
If ws1.Cells(i, j).Value <> ws2.Cells(i, j).Value Then
ws3.Cells(k, 1).Value = i
ws3.Cells(k, 2).Value = j
ws3.Cells(k, 3).Value = ws1.Cells(i, j).Value
ws3.Cells(k, 4).Value = ws2.Cells(i, j).Value
k = k + 1
End If
Next j
Next i
'自动调整表格3的列宽
ws3.Columns.AutoFit
MsgBox "比较完成!"
End Sub
```
这个代码假设需要比较的两个表格分别位于第一个工作表和第二个工作表中,比较结果将会输出到第三个工作表中。在比较时,它会逐个比较两个表格中的单元格,如果发现有不同的内容,则会将其记录到表格3中。最后,它会自动调整表格3的列宽,并弹出一个提示框告诉你比较已经完成。
阅读全文