我有2张excel表单A和表B.在表A中,我有一个包含员工姓名的命名范围。列B是空白的。在表2中,我有一个员工列表和出勤天数的命名范围。两个表中的员工姓名的顺序不同。我需要将表A中的名称与表B进行比较,当有匹配时,我需要复制出勤日并将其放在B列中的表A中。我正在寻找VBA的帮助
感谢任何帮助
这是我到目前为止所拥有的
Sub ADDCLM()
On Error Resume Next
Dim Dept_Row As Long
Dim Dept_Clm As Long
` Dim table1
Dim table2
Dim cl
table1 = Sheet1.Range("A2:A13")
table2 = Sheet2.Range("A2:A13")
Dept_Row = Sheet1.Range("B2").Row
Dept_Clm = Sheet1.Range("B2").Column
For Each cl In table1
Sheet1.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, table2, 2, False)
Dept_Row = Dept_Row + 1
Next cl
MsgBox "Done"
End Sub
答案 0 :(得分:0)
试试这个,未经测试。使用范围对象而不是变体。您的行/列计数器变量是不必要/冗余的,我将其删除。您需要将table2定义为两列范围以使用VLOOKUP函数并返回B列中的值。另外,摆脱On Error Resume Next
这是一个不好的做法,更好地使用错误处理或测试错误条件和重新路线。
Sub ADDCLM()
Dim table1 As Range
Dim table2 As Range
Dim cl As Range
Set table1 = Sheet1.Range("A2:A13")
Set table2 = Sheet2.Range("A2:B13") '# Modified this to 2 columns
For Each cl In table1
If Not IsError(Application.Match(cl,table2.columns(1),False) Then
cl.Offset(0,1) = Application.WorksheetFunction.VLookup(cl, table2, 2, False)
End If
Next
MsgBox "Done"
End Sub