【问题标题】:Copying data against a key column from other worksheet. (Trying to do as vlookup is not working in VBA)针对其他工作表中的键列复制数据。 (尝试做 vlookup 在 VBA 中不起作用)
【发布时间】:2019-06-10 01:06:09
【问题描述】:

我希望代码使用我可用的关键数据并在下一张表中交叉引用以从下一列中针对该表中的同一键获取数据。 我曾尝试使用 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

我希望将输出作为键的搜索结果,并将结果打印在数据表的第 4 列中的键上,其中包含数据转储。

     Details sheet:

Pd Details sheet: Resulting Pd Details sheet:

【问题讨论】:

    标签: excel vba loops worksheet-function cross-reference


    【解决方案1】:

    如何在 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
    

    【讨论】:

      猜你喜欢
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      相关资源
      最近更新 更多