可变工作簿上的VBA Vlookup不工作
我需要一些帮助来查找和更正下面的代码。 首先解释它的作用:可变工作簿上的VBA Vlookup不工作,vba,excel,Vba,Excel,我需要一些帮助来查找和更正下面的代码。 首先解释它的作用: 提示用户选择文件(vFileName1) 在打开的文件中添加一些必需的列和数据 提示用户选择第二个文件(vFileName2) 添加一些帮助列(可以简化),并尝试将基于第2个文件中的值的数据vlookup到第1个文件中,并从3列中提取数据 我遇到的问题是最后一个,因为我似乎无法让vlookup工作。我不知道如何在公式中引用第一个打开的工作簿,因为我不能通过其名称来引用它(因为它将是可变的,并且每个月都在变化) 任何帮助都将不胜感激
- 提示用户选择文件(vFileName1)
- 在打开的文件中添加一些必需的列和数据
- 提示用户选择第二个文件(vFileName2)
- 添加一些帮助列(可以简化),并尝试将基于第2个文件中的值的数据vlookup到第1个文件中,并从3列中提取数据
Sub Activate_sheet()
Application.ScreenUpdating = False
Call ReconFile
Application.ScreenUpdating = True
End Sub
Sub ReconFile()
' Activate_sheet Macro
' Select the source workbook and activates the proper sheet and prepares columns
Dim vFileName1 As Variant
' Prompt user to select a file
vFileName1 = Application.GetOpenFilename("Excel Files (*.xl*), *.xl*, All Files (*.*),*.*", , "Select the Recon file to be used")
If vFileName1 = "False" Then
MsgBox "No file selected", vbExclamation, "Cancelled"
Exit Sub 'user canceled
End If
With Workbooks.Open(Filename:=vFileName1, UpdateLinks:=0)
Worksheets("Data").Select
Columns("A:B").Insert Shift:=xlToRight
Columns("T:T").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues
Columns("A:A").TextToColumns Destination:=Range("A1")
Lngth = Range("$A$" & Rows.Count).End(xlUp).Row
Final = "$B$3:$B" & Lngth
Range(Final).FormulaR1C1 = "=RC[-1]&RC[14]"
Call WorkbenchFiles
.Close False
End With
End Sub
Sub WorkbenchFiles()
Dim CF As Long
Dim vFileName2 As Variant
CF = MsgBox("Would you like to select a new Workbench file?", vbYesNo)
If CF = vbYes Then
vFileName2 = Application.GetOpenFilename("Excel Files (*.xl*), *.xl*, All Files (*.*),*.*", , "Select the Workbench File to update")
If vFileName2 = "False" Then
MsgBox "No file selected", vbExclamation, "Cancelled"
Exit Sub 'user canceled
End If
Workbooks.Open (vFileName2)
Worksheets("Sheet1").Select
Lngth = Range("$A$" & Rows.Count).End(xlUp).Row
Final = "$K$2:$K" & Lngth
Range(Final).FormulaR1C1 = "=MID(RC[-10],8,8)"
Final = "$L$2:$L" & Lngth
Range(Final).FormulaR1C1 = "=RC[-1]&RC[-7]"
Final = "$M$2:$M" & Lngth
Range(Final).FormulaR1C1 = "=VLOOKUP(RC[-1], '[" & vFileName1 & "]Data'!$B:$H,3,0)"
Final = "$N$2:$N" & Lngth
Range(Final).FormulaR1C1 = "=VLOOKUP(RC[-2],'[" & vFileName1 & "]Data'!$B:$H,4,0)"
Final = "$O$2:$O" & Lngth
Range(Final).FormulaR1C1 = "=VLOOKUP(RC[-3],'[" & vFileName1 & "]Data'!$B:$H,7,0)"
Else: Exit Sub
End If
End Sub
您遇到的问题是混合使用R1C1和A1表示法,请将
$B:$H
更改为C2:C8
@ScottCraner谢谢。这是问题的一部分,以及我后来发现的其他一些东西。