我是VBA的新手,我正在寻找一个简单的VBA代码来比较2行并合并/复制数据,如果表中有不同的话。
我想将表2中的Colum A与表1中的Coolum A进行比较。
如果Colum A中的ID等于表1中的Colum A,则使用表1中的数据更新Colum B和C中的数据。
如果工作表2中没有工作表1中的ID,请将工作室A,B,C添加到工作表2中。
上述是否有意义?或
BR 和
答案 0 :(得分:0)
我没有通过这个测试所有场景。这样的事情是否适用于你想要做的事情?这确实假设Sheet2中出现0或1次ID。此外,假设第1行中有列标题而不是实际数据。
Public Sub CheckSheet2()
Dim source_sheet As Worksheet
Set source_sheet = ActiveWorkbook.Worksheets("Sheet1")
Dim source_last_row As Long
source_last_row = source_sheet.Range("A" & source_sheet.Rows.Count).End(xlUp).Row
Dim target_sheet As Worksheet
Set target_sheet = ActiveWorkbook.Worksheets("Sheet2")
Dim target_last_row As Long
target_last_row = target_sheet.Range("A" & target_sheet.Rows.Count).End(xlUp).Row
Dim source_row As Long
For source_row = 2 To source_last_row
Dim source_str As String
source_str = source_sheet.Range("A" & source_row).Value
Dim found_value As Range
Set found_value = target_sheet.Range("A2:A" & target_last_row).Find(source_str)
If Not found_value Is Nothing Then
target_sheet.Range(found_value.Address).Offset(0, 1).Value = source_sheet.Range("B" & source_row).Value
target_sheet.Range(found_value.Address).Offset(0, 2).Value = source_sheet.Range("C" & source_row).Value
Else
target_last_row = target_last_row + 1
target_sheet.Range("A" & target_last_row).Value = source_sheet.Range("A" & source_row).Value
target_sheet.Range("B" & target_last_row).Value = source_sheet.Range("B" & source_row).Value
target_sheet.Range("C" & target_last_row).Value = source_sheet.Range("C" & source_row).Value
End If
Next source_row
End Sub
您显然需要将Sheet1和Sheet2的值更改为工作表名称。
在我运行程序之前,我在Sheet1中看到了这样的东西。
在运行程序之前,这是在Sheet2中。注意ID 127和128丢失。
这是Sheet2在运行程序后的样子。