Excel VB宏从另一个工作表中查找值,然后更改当前工作表中的单元格值

时间:2016-05-04 20:59:06

标签: excel vba excel-vba

我有一个包含两个工作表的文件。我需要运行一个宏,它在sheet2上向下看A列,直到它为空。它需要从sheet1上的sheet2列A中的单元格中查找值。如果找到,则更改列AP的值。如果未找到,则跳到下一个搜索下一个值。

这是我到目前为止所拥有的。我已经能够将它修复到我不再出错的地方,但它也没有结果。它显示并且似乎运行但没有对sheet1上的单元格(“AP”,“行值找到”)进行任何更改。

Sub dataChange()
    Dim myRow As Integer
    Dim srch As Integer
    On Error GoTo Err_Execute
    myRow = 1
    srch = 1
    While Sheet2.Cells(myRow, 1).Value <> ""
        If Sheet1.Range("A" & CStr(srch)).Value = Sheet2.Cells(myRow, 1).Value Then
            Sheet1.Range("AP" & CStr(srch)).Value = "HOUSTON"
        End If
        srch = srch + 1
        myRow = myRow + 1
    Wend
Err_Execute:
    MsgBox "An error occurred."
End Sub

1 个答案:

答案 0 :(得分:0)

您的代码正在A1Sheet1 A1Sheet2进行比较。我想您要将A1中的Sheet1ColumnA中的所有Sheet2进行比较。因此,您需要一个外循环。

以下是您的代码,经过修改即可实现此目的。它还合并了Leviathan的评论,将Integer更改为Long,并将Exit Sub插入适当的位置。

当Sheet2看起来像这样......

enter image description here

我在Sheet1上得到了这个结果......

enter image description here

代码......

Sub dataChange()
    Dim myRow As Long, srch As Integer
    On Error GoTo Err_Execute
    myRow = 1
    srch = 1
    Do While Sheet1.Cells(srch, 1).VALUE <> ""
        Do While Sheet2.Cells(myRow, 1).VALUE <> ""
            If Sheet1.Cells(srch, 1).VALUE = Sheet2.Cells(myRow, 1).VALUE Then
                Sheet1.Range("AP" & srch).VALUE = "HOUSTON"
                Exit Do
            End If
            myRow = myRow + 1
        Loop
        myRow = 1
        srch = srch + 1
    Loop
    Exit Sub
Err_Execute:
    MsgBox "An error occurred."
End Sub