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
1条答案
按热度按时间ffx8fchx1#
我没有通过此测试所有方案。类似的东西是否适用于您要尝试做的事情?这确实假设了Sheet2中出现了0个或1个ID。此外,还假设了行1中存在列标题,而不是实际数据。
显然,您需要将Sheet1和Sheet2的值更改为您的工作表名称。
在我运行这个过程之前,我在Sheet1中有一个类似这样的东西。
这是在运行程序之前的Sheet2中。注意ID 127和128丢失。
这是Sheet2运行该程序后的样子。