Dim i As Integer
With ActiveSheet.UsedRange
For j = 1 To Sheet2.[a65536].End(3).Row '对某一列需要比对的数据循环find
Set rn = Cells.Find(what:=Sheet2.Cells(j, 1).Value, LookAt:=xlPart) 'find的内容
firstval = rn.Address '记录第一个查询到的单元格的位置
i = 1
Sheet2.Cells(i, j + 4).Value = rn.Value '将find的内容记录到sheet2
Debug.Print rn.Value
Set rn = .FindNext(after:=rn) '查询下一个赋值给rn
i = i + 1
Loop While rn.Address <> firstval '当循环一遍再匹配到第一个单元格时会退出
End With
End Sub
代码中标记的很清楚,我们是通过find这个方法来进行查找,
下面这句话是对要匹配的那一列进行循环作为关键字进行查找。
For j = 1 To Sheet2.[a65536].End(3).Row '对某一列需要比对的数据
采用部分匹配进行查找
Set rn = Cells.Find(what:=Sheet2.Cells(j, 1).Value, LookAt:=xlPart) 'find的内容
记录第一个单元格的位置
firstval = rn.Address '记录第一个查询到的单元格的位置
这句话是将查询到的单元格rn.value赋值给sheet2的从第5列(E列)开始的位置,每一列是每一个关键字匹配到的目标sheet中单元格的内容。。
针对最上面进行模拟的表格,那么运行上述代码得到的结果就是如下图: