为什么Vlookup宏可以部分工作?

发布于 2025-01-26 18:41:20 字数 822 浏览 3 评论 0原文

与手动Vookup公式中的键合相比,为什么VBA VLOOKUP代码无法填充所有数据?

Sub vlook()

Dim sSht As Worksheet
Dim pSht As Worksheet
Dim PLastRow As Long
Dim dataLastRow As Long
Dim rng As Range
Dim i As Long

Set sSht = ThisWorkbook.Worksheets("summarised_table")
Set pSht = ThisWorkbook.Worksheets("Pivot")

dataLastRow = pSht.Range("A" & Rows.Count).End(xlUp).Row
PLastRow = sSht.Range("A" & Rows.Count).End(xlUp).Row

Set rng = sSht.Range("A2:B" & dataLastRow)

For i = 2 To PLastRow

On Error Resume Next

pSht.Range("B" & i).Value = Application.WorksheetFunction.VLookup( _
    pSht.Range("A" & i).Value, rng, 2, False)
    

Next i

End Sub

why does the vba vlookup code is not able to populate all the data as compared to keying in the manual vlookup formula? enter image description here

Sub vlook()

Dim sSht As Worksheet
Dim pSht As Worksheet
Dim PLastRow As Long
Dim dataLastRow As Long
Dim rng As Range
Dim i As Long

Set sSht = ThisWorkbook.Worksheets("summarised_table")
Set pSht = ThisWorkbook.Worksheets("Pivot")

dataLastRow = pSht.Range("A" & Rows.Count).End(xlUp).Row
PLastRow = sSht.Range("A" & Rows.Count).End(xlUp).Row

Set rng = sSht.Range("A2:B" & dataLastRow)

For i = 2 To PLastRow

On Error Resume Next

pSht.Range("B" & i).Value = Application.WorksheetFunction.VLookup( _
    pSht.Range("A" & i).Value, rng, 2, False)
    

Next i

End Sub

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江湖正好 2025-02-02 18:41:20

worksheetfunction.vlookup

快速修复

Sub vlook()

    ' =VLOOKUP(p!A2,s!A:B,2,FALSE)

    ' s - Summarized Table
    Dim sws As Worksheet: Set sws = ThisWorkbook.Worksheets("summarised_table")
    Dim sLastRow As Long
    sLastRow = sws.Range("A" & sws.Rows.Count).End(xlUp).Row
    Dim srg As Range: Set srg = sws.Range("A2:B" & sLastRow)
    
    ' p - Pivot
    Dim pws As Worksheet: Set pws = ThisWorkbook.Worksheets("Pivot")
    Dim pLastRow As Long
    pLastRow = pws.Range("A" & pws.Rows.Count).End(xlUp).Row
    
    Dim i As Long
    
    For i = 2 To pLastRow
        On Error Resume Next
            pws.Range("B" & i).Value = WorksheetFunction.VLookup( _
                pws.Range("A" & i).Value, srg, 2, False)
        On Error GoTo 0
    Next i

    MsgBox "Lookup finished.", vbInformation

End Sub

WorksheetFunction.VLookup

A Quick Fix

Sub vlook()

    ' =VLOOKUP(p!A2,s!A:B,2,FALSE)

    ' s - Summarized Table
    Dim sws As Worksheet: Set sws = ThisWorkbook.Worksheets("summarised_table")
    Dim sLastRow As Long
    sLastRow = sws.Range("A" & sws.Rows.Count).End(xlUp).Row
    Dim srg As Range: Set srg = sws.Range("A2:B" & sLastRow)
    
    ' p - Pivot
    Dim pws As Worksheet: Set pws = ThisWorkbook.Worksheets("Pivot")
    Dim pLastRow As Long
    pLastRow = pws.Range("A" & pws.Rows.Count).End(xlUp).Row
    
    Dim i As Long
    
    For i = 2 To pLastRow
        On Error Resume Next
            pws.Range("B" & i).Value = WorksheetFunction.VLookup( _
                pws.Range("A" & i).Value, srg, 2, False)
        On Error GoTo 0
    Next i

    MsgBox "Lookup finished.", vbInformation

End Sub
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文