我有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
答案 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