簡體   English   中英

使用Vlookup時出錯

[英]Error while using Vlookup

我有兩張紙,Reason和Lastweek

我想比較兩張紙的B列,如果它們具有相同的ID,我想在原因表中獲取第33周到第50列的上周紙的所有細節。

我能夠獲得輸出,問題是,例如。 如果我在上周工作表的第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輸入的區域基於B2而不是A2,因此需要從給予VLOOKUP的列偏移中減去1。

請參閱“如何開始”部分中的第一個示例。 這里偏移量為3,即使在列D(零件價格)中查找數據也是如此。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM