首页 文章

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

提问于
浏览
1

我有一个包含两个工作表的文件 . 我需要运行一个宏,它在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

    您的代码将 A1Sheet1Sheet2 中的 A1 进行比较 . 我想你想将 Sheet1 中的 A1Sheet2 中的所有 ColumnA 进行比较 . 因此,您需要一个外部循环 .

    以下是您的代码,经过修改即可实现此目的 . 它还包含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
    

相关问题