根据值是否匹配从 sheet2 复制到 sheet1

根据值是否匹配从 sheet2 复制到 sheet1

此代码的目的是遍历 中的一列,sheet1并检查每个值是否与 中一行的值相匹配sheet2。如果值匹配,则将 5 行信息从sheet2复制到sheet1当时所在的特定行。

问题:

  • if 语句的第一行出现错误 1004。
  • 我认为Next b也会抛出错误

VBA 代码:

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
        Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
        Next b
        End If
Next i

答案1

为了将范围的行和列指定为数字,您必须使用Cells而不是Range。此外,您的Next b行会引发错误,因为它位于嵌套If语句内。相反,您应该使用Exit For退出 For 循环,并移动到语句Next b外部If

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
            Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
            Exit For
        End If
    Next b
Next i

相关内容