在Excel中比较两个工作表并从两个工作表中构建具有重复项的新工作表,可以使用VBA代码来实现。以下是一个示例代码:
Sub CompareAndBuildNewWorksheet()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim cell As Range
Dim lastRow As Long
' 设置要比较的两个工作表
Set ws1 = ThisWorkbook.Worksheets("Sheet1") ' 工作表1
Set ws2 = ThisWorkbook.Worksheets("Sheet2") ' 工作表2
' 创建新的工作表
Set ws3 = ThisWorkbook.Worksheets.Add
' 在新工作表中复制标题行
ws1.Rows(1).Copy Destination:=ws3.Rows(1)
' 获取工作表1和工作表2的最大行数
lastRow = WorksheetFunction.Max(ws1.Cells(Rows.Count, 1).End(xlUp).Row, ws2.Cells(Rows.Count, 1).End(xlUp).Row)
' 遍历每行并比较两个工作表中的数据
For Each cell In ws1.Range("A2:A" & lastRow)
' 如果在工作表2中找到与工作表1相同的值,则复制整行到新工作表中
If Not IsError(Application.Match(cell.Value, ws2.Range("A2:A" & lastRow), 0)) Then
ws1.Rows(cell.Row).Copy Destination:=ws3.Cells(ws3.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
End If
Next cell
' 在新工作表中删除重复项的行
ws3.UsedRange.RemoveDuplicates Columns:=Array(1)
' 自动调整新工作表的列宽
ws3.UsedRange.Columns.AutoFit
' 给新工作表命名
ws3.Name = "重复项"
' 提示完成消息
MsgBox "已创建新工作表“重复项”包含两个工作表中的重复项。"
End Sub
使用上述代码,你需要将“Sheet1”和“Sheet2”替换为你实际的工作表名称,然后运行该代码。它将在同一工作簿中创建一个名为“重复项”的新工作表,并在该工作表中构建具有重复项的数据。