用于vlookup的excel宏

时间:2013-05-29 02:06:14

标签: excel excel-vba vlookup vba

我有2个不同的工作簿,其中包含一组参数,例如:汽车零件编号,销售价格等。两种不同的工作簿将始终具有相同的汽车零件编号,但它们不符合要求。所以我考虑使用vlookup来匹配一个工作簿上的参数与另一个与各个部分的数字相关的参数。

因此,我使用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 

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。您必须将此宏放在Personal宏工作簿中,以便它可以随时可用,无论打开哪些工作簿。它将提示您输入两个文件,然后打开它们,并应插入公式。如果它给你带来任何麻烦,请告诉我,因为我现在无法测试它。

注意:这会将值一列查找到您选择的单元格的LEFT,然后查看另一个文件的列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