我正在尝试匹配来自2个不同工作表(wsMaster& wsSample)的col C和col B,并从wsSample中检索col F以将其放在wsMaster中的col D中。我的代码在下面运行,但没有结果。我的代码有什么问题吗?
j = 2
Do While wsMaster.Cells(j, 3).Value <> ""
Set rngcell = wsSample.Range("B:B").Find(What:=wsMaster.Cells(j, 3), After:=wsSample.Range("A2"), LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlRows, SearchDirection:=xlNext)
If Not rngcell Is Nothing Then wsMaster.Cells(j, 4) = rngcell.Offset(0, 4)
j = j + 1
Loop
本地窗口显示我的rngcell = Nothing但我不太清楚为什么。 谢谢!!
答案 0 :(得分:3)
您正在Range("B:B")
之后Range("A2")
进行搜索。因此,它没有找到任何东西。更改After
范围以对应搜索范围。
检查此代码,该代码在搜索范围内具有搜索到的值,但它给出了错误13,因为After
位于另一个范围内:
Sub TestMe()
'On Error Resume Next
Dim rngCell As Range
Range("B1") = "test"
Set rngCell = Range("B:B").Find("test", Range("A1"))
If rngCell Is Nothing Then Debug.Print "Not Found!"
End Sub
如果取消注释On Error Resume Next
(您可能正在使用),它将找不到该值。
答案 1 :(得分:2)
实际上,您的代码运行会令人惊讶,它应该会给您
运行时错误13:类型不匹配
更改为:
Set rngcell = wsSample.Range("B:B").Find(What:=wsMaster.Cells(j, 3), After:=wsSample.Range("B2"), LookIn:=xlValues, Lookat:=xlWhole)
或完全删除After
:
Set rngcell = wsSample.Range("B:B").Find(What:=wsMaster.Cells(j, 3), LookIn:=xlValues, Lookat:=xlWhole)
注意:您也可以将Range("B:B")
更改为Columns(2)
。