2017-08-31 82 views
1

我有兩個表,原因及過去一週錯誤而使用VLOOKUP

我想在B列比較兩種板材的,如果它們具有相同的ID的話,我想獲得的過去一週所有的細節原因表中的第33列至第50列。

我能夠得到輸出,問題是,例如。如果我在我的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 

回答

2

使用33號列的示例,您的Vlookup正在查看從LastWeek表單中的單元格B2開始的範圍。這個範圍的第33列將是該表的AH列。輸出公式時,輸出到原因表的第012列。我是33,這是列AG。如果你想輸出到列AH(列號34,或i + 1)。您可以通過簡單地改變這一行做到這一點:

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