用VBA写一个对比表格的代码,其中需要对比的表格位于同一张工作表中
时间: 2024-03-06 14:48:40 浏览: 35
下面是一个简单的 VBA 代码,可以用于比较同一张工作表中的两个表格中的数据,并将它们的差异显示在一个新的表格中:
```
Sub CompareTables()
Dim ws As Worksheet, ws3 As Worksheet
Dim lastRow As Long, lastCol As Long
Dim i As Long, j As Long, k As Long
'设置需要比较的表格
Set ws = Worksheets("Sheet1")
Set ws3 = Worksheets("Sheet3")
'获取表格1和表格2的最后一行和最后一列
lastRow = Application.WorksheetFunction.Max(ws.Range("A:A").End(xlDown).Row, _
ws.Range("D:D").End(xlDown).Row)
lastCol = Application.WorksheetFunction.Max(ws.Range("A:Z").End(xlToLeft).Column)
'在表格3中创建一个标题行
ws3.Cells(1, 1).Value = "Row"
ws3.Cells(1, 2).Value = "Column"
ws3.Cells(1, 3).Value = "Table1"
ws3.Cells(1, 4).Value = "Table2"
k = 2 '用于记录表格3的行数
'比较表格1和表格2中的数据,并将差异记录在表格3中
For i = 2 To lastRow '从第2行开始是因为第1行是表头
For j = 1 To lastCol
If ws.Cells(i, j).Value <> ws.Cells(i, j + 3).Value Then '假设需要比较的两个表格中间隔了3列
ws3.Cells(k, 1).Value = i
ws3.Cells(k, 2).Value = j
ws3.Cells(k, 3).Value = ws.Cells(i, j).Value
ws3.Cells(k, 4).Value = ws.Cells(i, j + 3).Value
k = k + 1
End If
Next j
Next i
'自动调整表格3的列宽
ws3.Columns.AutoFit
MsgBox "比较完成!"
End Sub
```
这个代码假设需要比较的两个表格位于同一张工作表中,比较结果将会输出到第三个工作表中。在比较时,它会逐个比较两个表格中的单元格,如果发现有不同的内容,则会将其记录到表格3中。最后,它会自动调整表格3的列宽,并弹出一个提示框告诉你比较已经完成。注意,这个代码中的比较条件是需要比较的两个表格中间隔了3列。如果这个条件不符合你的需求,你可以根据实际情况进行修改。