两个excel表数据匹配

待解决的问题

有两个excel sheet,Shee1 A列有英文名;Sheet2 A列有英文名,B列有部门。现在需要将Sheet2中B列的部门按A列英文名填写到Sheet1的C列。

解决方案

前两步参考快速批量导出excel超链接的步骤一、二

第三步代码:

Sub UpdateDepartments()
    
    ' 定义变量
    Dim sheet1 As Worksheet
    Dim sheet2 As Worksheet
    Dim lastRow1 As Long
    Dim lastRow2 As Long
    Dim i As Long
    Dim j As Long
    
    ' 获取Sheet1和Sheet2对象
    Set sheet1 = ThisWorkbook.Worksheets("Sheet1")
    Set sheet2 = ThisWorkbook.Worksheets("Sheet2")
    
    ' 获取Sheet1和Sheet2的行数
    lastRow1 = sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    lastRow2 = sheet2.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 遍历Sheet1的所有行
    For i = 2 To lastRow1
        ' 获取当前行的英文名
        Dim name As String
        name = sheet1.Cells(i, 1).Value
        
        ' 在Sheet2中查找对应的部门
        For j = 2 To lastRow2
            If sheet2.Cells(j, 1).Value = name Then
                ' 将部门信息填写到Sheet1的C列
                sheet1.Cells(i, 3).Value = sheet2.Cells(j, 2).Value
                Exit For
            End If
        Next j
    Next i
    
End Sub

解决思路

在这个代码中,我们首先定义了一些变量,包括Sheet1和Sheet2的Worksheet对象、Sheet1和Sheet2的行数、以及两个循环变量i和j。

然后,我们使用Set语句获取Sheet1和Sheet2的Worksheet对象,并使用Cells和End函数获取Sheet1和Sheet2的行数。

接下来,我们使用两个嵌套的循环遍历Sheet1的所有行,并在Sheet2中查找对应的部门信息。如果找到了对应的部门信息,就将其填写到Sheet1的C列中。

猜你喜欢

转载自blog.csdn.net/gongchenyu/article/details/130702417