待解决的问题
有两个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列中。