在VBA中使用VlookUp从下到上进行search

我在一个更大的macros中使用了一块VBA来备份一些评论。 在返回这些评论时,我在VBA中使用了Vlookup。 问题是,Vlookup从上到下search。 我想转过来,并从底部到顶部进行search。 我将如何去实现这一目标? 我已经用完了Google的选项。 试图从中学习,所以请尽可能解释你的解决scheme。

确切地说,我使用下面添加的代码:

Dim Dept_Row As Long Dim Dept_Clm As Long Table1 = Sheets("16-Compliancy-Rebuild").Range("D85:D750") Table2 = Sheets("OpmerkingBackup").Range("B2:F750") Dept_Row = Sheets("16-Compliancy-Rebuild").Range("H85").Row Dept_Clm = Sheets("16-Compliancy-Rebuild").Range("H85").Column For Each cl In Table1 Sheets("16-Compliancy-Rebuild").Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, Table2, 5, False) Dept_Row = Dept_Row + 1 Next cl 

因此,而不是使用VlookUp ,您可以使用.Find来代替。 有了这个函数就可以明确search方向, xlPrevious会从下往上search。 唯一的区别是在返回值中,它返回匹配的单元格。 Match( rng.Row )的行现在可以用来从右列获取数据集。

 Dim sht As Worksheet, sht As Worksheet Set sht = Sheets("16-Compliancy-Rebuild") Set sht2 = Sheets("OpmerkingBackup") Dim Dept_Row As Long Dim Dept_Clm As Long Dim rng As Range Table1 = sht.Range("D85:D750") Table2 = sht2.Range("B2:B750") Dept_Row = sht.Range("H85").Row Dept_Clm = sht.Range("H85").Column For Each cl In Table1 Set rng = Table2.Find(cl, SearchDirection:=xlPrevious, LookAt:=xlWhole) If Not rng Is Nothing Then sht.Cells(Dept_Row, Dept_Clm) = sht2.Cells(rng.Row, 6).Value End If Dept_Row = Dept_Row + 1 Next cl 

除此之外,我还使用variables的工作表,使更容易更改和查找。