使用Vlookup时出错

我有两张纸,理由和Lastweek

我想比较这两张表的B列,如果他们有相同的ID,那么我想在原因表中把第33列到第50列的所有lastweek表格的细节都弄清楚。

我能够得到输出,问题是,例如。 如果我在我的lastweek工作表的第34列中有数据,那么它将进入原因表的第33列。

有人可以帮助,我怎么能克服这一点。

Sub lookupUpdate() Dim BWlRow As Long, CWlRow As Long, i As Long Dim sformula As String Dim wsBW As Worksheet, wsCW As Worksheet Set wsBW = Sheets("Reason"): Set wsCW = Sheets("Lastweek") BWlRow = wsBW.Cells(wsBW.Rows.count, "A").End(xlUp).Row CWlRow = wsCW.Cells(wsCW.Rows.count, "A").End(xlUp).Row For i = 33 To 50 '~~> Col AD to AU sformula = "=IF(IFERROR(VLOOKUP($B2,Lastweek!$B$2:$AZ" & _ CWlRow & _ "," & _ i & _ ",FALSE),""0"")=0,"" "",IFERROR(VLOOKUP($B2,Lastweek!$B$2:$AZ" & _ CWlRow & _ "," & _ i & _ ",FALSE),""""))" With wsBW With .Range(.Cells(2, i), .Cells(BWlRow, i)) .Formula = sformula .Value = .Value End With End With Next i End Sub 

使用33号列的示例,您的Vlookup正在查看从LastWeek表单中的单元格B2开始的范围。 该范围的第33列将是表格的AH栏。 输出公式时,输出到“原因”表的第i列。 我是33,这是列AG。 如果要输出到列AH(列号34或i + 1)。 你可以通过简单地改变这一行来做到这一点:

 With .Range(.Cells(2, i + 1), .Cells(BWlRow, i + 1)) 

由于使用VLOOKUP进行search的区域基于B2而不是A2,因此需要从VLOOKUP的列偏移量中减去1。

请参阅“如何开始”一节中的第一个示例。 即使在列D(零件价格)中查找数据,偏移量也是3。

https://support.office.com/en-us/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1