针对其他工作表中的键列复制数据。 (尝试做 vlookup 在 VBA 中不起作用)

Copying data against a key column from other worksheet. (Trying to do as vlookup is not working in VBA)

我希望代码使用我可用的键数据并在下一个 sheet 中交叉引用,以根据 sheet 中的相同键从下一列获取数据。 我曾尝试使用 VLOOKUP,但虽然它手动工作正常,但在宏中使用时不起作用。 请参考以下代码:

因此,为了获得结果,我尝试通过对我可用的数据列使用循环来搜索数据。

    Sheets("Details").Select
    Dim myval, strr As String
    Dim cell As Range
    Dim i, j, k As Integer
    j = 3
    i = ActiveWorkbook.Worksheets("Details").Range("A1", 
    Worksheets("Details").Range("A1").End(xlDown)).Rows.Count

    Sheets("Pd Details").Select
    Do While Cells(j, 1).Value <> ""
        myval = Cells(j, 1).Value
            For k = 3 To i
                Sheets("Details").Select
                If myval = Cells(k, 1).Value Then
                    strr = Cells(k, 2).Value
                    Sheets("Pd Details").Select
                    Cells(j, 4).Value = strr
                    Exit For
                End If
            Next
        Sheets("Pd Details").Select
        j = j + 1
    Loop

我希望输出作为键的搜索,并根据具有数据转储的数据 sheet 中第 4 列中的键打印结果。

     Details sheet:

Pd Details sheet: Resulting Pd Details sheet:

如何在 VBA 中使用 VLookUp,如下所示,这将获取 PD 详细信息工作表中的最后一行,然后使用 Vlookup 获得所需的结果,然后删除公式,使其仅保留值.

(我已确保删除任何 Select 语句,因为这些语句只会减慢您的代码速度)

Sub Test()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim wsDetails As Worksheet: Set wsDetails = wb.Worksheets("Details")
Dim wsPDDetails As Worksheet: Set wsPDDetails = wb.Worksheets("Pd Details")
'declare and set the worksheets
Dim LastRow As Long

LastRow = wsPDDetails.Cells(wsPDDetails.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A on the PD Details sheet

wsPDDetails.Range("D1:D" & LastRow).FormulaR1C1 = "=VLOOKUP(RC[-3],Details!C[-3]:C,2,FALSE)"
'use the Vlookup formula

wsPDDetails.Range("D1:D" & LastRow).Value = wsPDDetails.Range("D1:D" & LastRow).Value
'convert the results from the formula to values and remove the formula itself.
End Sub