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
中的A1
与Sheet2
A1
进行比较。 我想你想在Sheet1
中将A1
与Sheet2
所有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