Excel vba来比较值

时间:2013-08-24 14:15:41

标签: vba excel-vba excel

我有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

1 个答案:

答案 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