繁体   English   中英

Vlookup到另一个用户选择的文件上的表VBA宏

[英]Vlookup to a table on a different user selected file VBA Macro

我试图在名为“ FY_16”的工作表的S列中输入Vlookup公式。 我需要用户选择公式的“表数组”所在的文件(每月更改)。

每个月文件都会更改,但我要查找的列将始终相同-W列(但行数有所不同)。 公式将查找的“表数组”是表的一部分。

此时我的代码如下:

Private Function UseFileDialogOpen()
MsgBox ("When the browse window opens: please select the previous months published FY16 Consulting SKU File")

Dim myString As String
' Open the file dialog
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 1 Then
    myString = .SelectedItems(1)
    'MsgBox myString
    UseFileDialogOpen = myString
Else
    MsgBox ("Failed to properly open file")
    myString = "fail"
    UseFileDialogOpen = myString
End If
End With
End Function

Sub Vlookup
Dim filelocation 'as what?????

filelocation = UseFileDialogOpen()


Worksheets("FY_16").Range("T2:T" & LastRow).FormulaR1C1 = "=vlookup(RC[-3], [" & myString & "] PA Rev!R1C23:R900000C23,1,false)"

我的问题发生在代码的最后一行。 我收到“运行时错误1004:应用程序定义或对象定义”消息。

我知道我的语法在某些方面对于vlookup不正确。 我不确定“&myString&”是否正确,也许这应该是“文件位置”?

我也不相信R1C1可以像在vlookup中那样命名一个范围。 我通常会用

  .Range(Cells(2,23), Cells(90000,23))

但是我不确定如何将其与保存所选文件名的变量一起使用。

另外,我正在使用90000行,因为这将超出每个月的数据量(通常行数约为75000)。 我宁愿找到确切的行号,但是我不相信如果不打开用户选择的“目标文件”就可以做到这一点。 如果有办法做到这一点,请提供任何建议!

我想知道是否有一种使用表名来设置表数组的方法?

非VBA vlookup如下:

=VLOOKUP(Q2,'TargetFile.xlsb'!REV[[#All],[Net New Match]],1,FALSE)

TargetFile是用户选择的文件REV是表数组在Net New上的工作表New Match是我要查找的列(整个列)

我尝试使用这些表名,但是语法不正确(可能是因为其余的公式代码也不正确)。

任何帮助将不胜感激。 让我知道是否需要澄清。

麦克风

访问未打开的工作簿中的范围的正确语法应类似于'C:\\Temp\\[Book2.xlsx]PA Rev'!R1C23:R900000C23 那将与UseFileDialogOpen函数的格式UseFileDialogOpen

你也不能使用myString你中Vlookup子程序,因为你定义的变量是本地的UseFileDialogOpen -但你可以使用filelocation您已用于存储从结果UseFileDialogOpen 但是,正如我所说,它无论如何都不会采用正确的格式,因此需要重新格式化。

以下命令应进行必要的重新格式化:

Worksheets("FY_16").Range("T2:T" & LastRow).FormulaR1C1 = _
     "=vlookup(RC[-3],'" & Left(fileLocation, InStrRev(fileLocation, "\")) & _
     "[" & Mid(fileLocation, InStrRev(fileLocation, "\") + 1) & _
     "]PA Rev'!R1C23:R90000C23,1,false)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM