Excel VBA - IF / AND问题 - 如果两列中的值在不同的工作表上匹配,请将另一列中的值从一个工作表复制到另一个工作表

时间:2018-03-08 21:38:37

标签: excel vba excel-vba

我希望比较“状态”和“参考”。如果两个列Status?F和Ref!B AND Status!Q和Ref!C中的值匹配特定个人的数据,则将值从Ref!F复制到Status!H

这是我第一次尝试编写代码,因此它可能充满了错误,但调试器特别指出了第一个If语句。我用括号和无括号尝试过它。

Sub help()

    Dim i As Long
    Dim j As Long
    Dim index As Integer


    Sheet1LastRow = Worksheets("Status").Range("F" & Rows.Count).End(xlUp).Row
    Sheet2LastRow = Worksheets("Ref").Range("B" & Rows.Count).End(xlUp).Row


    For index = 1 To Sheet1LastRow
        If ((Worksheets("Status").Cells(i, 6).Value = Worksheets("Ref").Cells(j, 2).Value) And (Worksheets("Status").Cells(i, 17).Value = Worksheets("Ref").Cells(j, 3).Value)) Then Worksheets("Status").Cells(i, 8).Value = Worksheets("Ref").Cells(j, 6)
    Next
    index = index + 1
    j = j + 1
    i = i + 1
    Do Until index = Sheet1LastRow
    Loop
End Sub

编辑 - 注释 - 这些工作表的顺序不同。所以Status中的第1500行可以匹配ref上第3行的内容,例如

1 个答案:

答案 0 :(得分:0)

试试这个

For i = 1 To Sheet1LastRow
    For j = 1 To Sheet2LastRow
        If ((Worksheets("Status").Cells(i, 6).Value = Worksheets("Ref").Cells(j, 2).Value) and (Worksheets("Status").Cells(i, 17).Value = Worksheets("Ref").Cells(j, 3).Value)) Then
            Worksheets("Status").Cells(i, 8).Value = Worksheets("Ref").Cells(j, 6).Value
            Exit for
        End if
    Next j
Next i