VBA对比两个excel中的不同sheet中的一列,如果相同将该列后一列的数据粘贴到另一个excel中
时间: 2023-09-18 22:13:04 浏览: 94
可以使用VBA中的循环语句和条件语句来实现对比并粘贴数据。以下是一个简单的示例代码,可以作为参考:
```
Sub CompareAndPasteData()
Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim i As Long, j As Long, k As Long
Dim lastRow As Long
'打开要对比和粘贴数据的三个Excel表格
Set wb1 = Workbooks.Open("path\to\excel1.xlsx")
Set wb2 = Workbooks.Open("path\to\excel2.xlsx")
Set wb3 = Workbooks.Open("path\to\excel3.xlsx")
'指定要对比和粘贴数据的工作表
Set ws1 = wb1.Worksheets("Sheet1")
Set ws2 = wb2.Worksheets("Sheet1")
Set ws3 = wb3.Worksheets("Sheet1")
'指定要对比的列数
j = 1
'循环遍历第一个表格中的每个单元格
For i = 1 To ws1.UsedRange.Rows.Count
'获取第一个表格中指定列的值
Dim value1 As String
value1 = ws1.Cells(i, j).Value
'循环遍历第二个表格中的每个单元格
For k = 1 To ws2.UsedRange.Rows.Count
'获取第二个表格中指定列的值
Dim value2 As String
value2 = ws2.Cells(k, j).Value
'如果第一个表格中的指定列的值与第二个表格中的指定列的值相同
If value1 = value2 Then
'获取第二个表格中指定列的后一列的值
Dim pasteValue As String
pasteValue = ws2.Cells(k, j + 1).Value
'将数据粘贴到第三个表格中
lastRow = ws3.Cells(Rows.Count, j).End(xlUp).Row
ws3.Cells(lastRow + 1, j).Value = value2
ws3.Cells(lastRow + 1, j + 1).Value = pasteValue
End If
Next k
Next i
'关闭工作簿
wb1.Close SaveChanges:=True
wb2.Close SaveChanges:=True
wb3.Close SaveChanges:=True
End Sub
```
注意,此代码仅用于参考目的,实际使用时需要根据实际情况进行修改和优化。
阅读全文