-2

我有 2 个带有一组参数的不同工作簿,例如汽车零件编号、销售价格等。这两个不同的工作簿将始终具有相同的汽车零件编号,但它们不按顺序排列。因此,我正在考虑使用 avlookup将一个工作簿上的参数与另一个与相应零件编号相关的参数相匹配。

因此,我曾经vlookup执行此任务。它可以工作,但我想使用宏来实现它,所以我不需要vlookup每次都手动执行。考虑到工作簿(文件名)每次都不同,是否可以创建这样的宏?

我实际上尝试记录宏并vlookup记录它需要的与文件名相关的参数。

编辑:评论中的代码:

Sub Macro1() 
    ActiveCell.FormulaR1C1 = "=VLOOKUP('[TI_DBP_effective_06 May 2013.xls]NON SLL'!C1,'[TI_DBP_effective_06 May 2013.xls]NON SLL'!C1:C3,3,FALSE)" 
    Range("I1").Select Selection.AutoFill Destination:=Range("I1:I9779") 
    Range("I1:I9779").Select 
End Sub 
4

1 回答 1

0

尝试这样的事情。您必须将此宏放在您的个人宏工作簿中,以便它始终可用,无论打开哪些工作簿。它会提示您输入两个文件,然后打开它们,并应插入公式。让我知道它是否给您带来任何麻烦,因为我现在无法对其进行测试。

注意:这会在您选择的单元格的左侧查找值一列,然后在另一个文件的列 1:3 中查找。根据需要进行修改。

Sub Macro1()
    Dim file1 As String
    Dim file2 As String
    Dim wbSource As Workbook
    Dim wbLookup As Workbook
    Dim startRange As Range

    file1 = Application.GetOpenFilename(Title:="Select the file to update")
    If Len(Dir(file1)) = 0 Then Exit Sub
    file2 = Application.GetOpenFilename(Title:="Select the LOOKUP file")
    If Len(Dir(file2)) = 0 Then Exit Sub

    Set wbLookup = Workbooks.Open(file2)
    Set wbSource = Workbooks.Open(file1)

    On Error Resume Next
    Set startRange = Application.InputBox("Select the first cell for the formula", "Autofill VLOOKUP", Type:=8)
    On Error GoTo 0
    If Not startRange Is Nothing Then
        Application.Goto startRange
        startRange.FormulaR1C1 = "=VLOOKUP('[" & wbSource.Name & "]NON SLL'!RC[-1],'[" & wbLookup.Name & "]NON SLL'!C1:C3,3,FALSE)"
        startRange.AutoFill Destination:=startRange.End(xlDown)
    End If

End Sub
于 2013-05-29T12:24:33.583 回答