[英]Error while using lookup function
我有兩張床單。 Sheet1:上周,sheet2:本周。
我在具有sheet1的sheet2的A列中尋找我的ID,如果它們匹配,我會將值從sheet1的M列復制到sheet2的M列。
由於某種原因,我在sheet1中找不到的值被填充為“ 0”。 我不希望這種情況發生在我的代碼中。 我只希望代碼查找ID,如果它們匹配我想要的值,否則我不希望打印任何內容。
有人可以建議我要去哪里錯嗎?
Sub lookup()
Dim tr As Long
Dim trsh As Long
tr = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
trsh = Sheets("ThisWeek").Cells(Rows.Count, "A").End(xlUp).Row
Sheets("ThisWeek").Range("M2:M" & tr).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("A2:A" & trsh), Sheets("LastWeek").Range("$A:$P"), 13, 0), "")
End Sub
代替
Sheets("ThisWeek").Range("M2:M" & tr).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("ThisWeek").Range("A2:A" & trsh), Sheets("LastWeek").Range("$A:$P"), 13, 0), "")
嘗試
Dim cel as Range
For Each cel In Sheets("ThisWeek").Range("M2:M" & tr)
cel.Offset(0, 1).Formula = Application.WorksheetFunction.IfError(Application.VLookup(cel, Sheets("LastWeek").Range("$A:$P"), 13, 0), "")
Next cel
雖然可以使用工作表和范圍變量來修改您的代碼。 並確保使用正確的tr
和trsh
。
編輯:
Sub lookupPSQM()
Dim thisWeekLR As Long, lastWeekLR As Long
Dim thisWeekSht As Worksheet, lastWeekSht As Worksheet
Dim rng As Range, cel As Range
Set thisWeekSht = ThisWorkbook.Sheets("ThisWeek")
Set lastWeekSht = ThisWorkbook.Sheets("LastWeek")
thisWeekLR = thisWeekSht.Cells(Rows.Count, "A").End(xlUp).Row
'lastWeekLR = lastWeekSht.Cells(Rows.Count, "A").End(xlUp).Row
Set rng = thisWeekSht.Range("A2:A" & thisWeekLR)
For Each cel In rng
cel.Offset(0, 12).Formula = Application.WorksheetFunction.IfError(Application.VLookup(cel, Sheets("LastWeek").Range("$A:$P"), 13, 0), "")
Next cel
End Sub
參見圖片以供參考。
工作表LastWeek
工作表ThisWeek
您可以嘗試這樣的事情...
如果需要,請更正圖紙參考。 當前,它假定工作表分別稱為ThisWeek和LastWeek。
Sub lookupPSQM()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim tr As Long
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
Set wsSource = Sheets("LastWeek")
Set wsDest = Sheets("ThisWeek")
tr = wsDest.Cells(Rows.Count, "A").End(xlUp).Row
wsDest.Range("M2:M" & tr).Formula = "=IfError(VLookup(A2,'" & wsSource.Name & "'!A:M, 13, 0), """")"
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
該代碼將是這樣的。
Sub test()
Dim Ws As Worksheet, toWs As Worksheet
Dim vDB, vR(), vDB2
Dim i As Long, j As Long
Set toWs = Sheets("ThisWeek")
Set Ws = Sheets("LastWeek")
vDB = Ws.Range("a1").CurrentRegion
vDB2 = toWs.Range("a1").CurrentRegion
n = UBound(vDB2, 1)
ReDim vR(1 To n - 1, 1 To 1)
For i = 2 To n
For j = 2 To UBound(vDB, 1)
If vDB2(i, 1) = vDB(j, 1) Then
vR(i - 1, 1) = vDB(j, 13)
Exit For
End If
Next j
Next i
toWs.Range("m2").Resize(n - 1) = vR
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.