簡體   English   中英

VBA IF然后Vlookup多個工作表

[英]VBA IF Then Vlookup Multiple Sheet

我正在嘗試使用VLOOKUP函數從另一個文件中檢索數據,但這僅取決於3欄(C)中是否出現了這2個數據項

“ PO材料”或“ PO人工”

Sub MakeFormulas()

Dim SourceLastRow As Long
Dim OutputLastRow As Long
Dim sourceSheet As Worksheet
Dim outputSheet As Worksheet
Dim X As Long

'What are the names of our worksheets?
Set sourceSheet = Worksheets("Sheet1")
Set outputSheet = Worksheets("Sheet2")


'Determine last row of source
With sourceSheet
    SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

With outputSheet

    'Determine last row in col C
    OutputLastRow = .Cells(.Rows.Count, "E").End(xlUp).Row

    For X = 5 To OutputLastRow
        If InStr(1, .Range("C" & X), "PO Materials") > 0 Then
            'Apply our formula
        .Range("Q2:Q" & OutputLastRow).Formula = _
            "=VLOOKUP(E2,'" & sourceSheet.Name & "'!$A$2:$B$" & SourceLastRow & ",2,0)"
        End If
    Next
End With

End Sub

代碼正在運行; 但是,如果單元格為空或在C列中包含任何值,則給出#N / A,這意味着它無法識別If語句。 如果該列不包含“ PO物料”或“ PO人工”,則希望跳至該范圍內的下一個單元格

在此先感謝您提供的任何幫助。

生成VLOOKUP的代碼每次都會將該公式應用於列中的每個單元格。 也就是說,每次你的時間If條件可找到“PO材料”,它將VLOOUKP適用於Q2和E列中的最后一行之間的每一個細胞

我認為這是您想要的:

.Range("Q" & X).Formula = _
    "=VLOOKUP(E" & X & ",'" & sourceSheet.Name & "'!$A$2:$B$" & SourceLastRow & ",2,0)"

另外,也可以在電子表格中完全完成此操作:

=IF(ISERROR(FIND("PO Materials",C6)),"",VLOOKUP(E6,Sheet1!$A$2:$B$6,2,0))

最終代碼以供將來參考

Sub MakeFormulas()
Dim SourceLastRow As Long
Dim OutputLastRow As Long
Dim sourceSheet As Worksheet
Dim outputSheet As Worksheet
Dim X As Long

'What are the names of our worksheets?
Set sourceSheet = Worksheets("Sheet1")
Set outputSheet = Worksheets("Sheet2")


'Determine last row of source
With sourceSheet
SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With outputSheet

'Determine last row in col C
OutputLastRow = .Cells(.Rows.Count, "C").End(xlUp).Row

For X = 2 To OutputLastRow
If InStr(1, .Range("C" & X), "PO Materials") + InStr(1, .Range("C" & X), "PO Labor") > 0 Then
    'Apply our formula
.Range("Q" & X).Formula = _
"=VLOOKUP(E" & X & ",'" & sourceSheet.Name & "'!$A$2:$B$" & SourceLastRow & ",2,0)"
End If
Next
End With
End Sub

暫無
暫無

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

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