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

我有一个文件有两个工作表。 我需要运行一个macros,查看sheet2上的列A,直到它为空。 它需要从sheet1的sheet2列A中的单元格中查找值。 如果find,则更改列AP的值。 如果没有find,则跳到下一个值的下一个search。

这是我迄今为止。 我已经能够解决它,我不再有错误,但它也没有结果。 它显示并似乎运行,但没有对sheet1上的单元格(“AP”,“行值find”)进行更改。

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 

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

下面是你的代码,修改完成这个。 它也包含了Leviathan的评论,将Integer的改为Long ,并将Exit Sub插入到适当的位置。

当Sheet2看起来像这样…

在这里输入图像说明

我在Sheet1上得到这个结果…

在这里输入图像说明

代码 …

 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