无法使用其他工作簿中的Vlookup

时间:2016-05-27 14:19:29

标签: excel vba excel-vba

我打算或多或少地自动完成一些工作,并考虑使用Excel VBA。基本上我想要一个单独的工作簿来从一些不同的工作簿中获取数据。

为此,我尝试过:

Dim openWb As Workbook
Dim openWs As Worksheet

Path = Dir("PathToFile\File.xlsx")
filepath = "PathToFile"

Set openWb = Workbooks.Open(filepath & Path)
Set openWs = openWb.Sheets("Sheet1")

currentwb.Sheets("Sheet2").Cells.(2, 20).Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1))

我想要实现的基本上是从对应于" John"的行中获取值。以及对应于" Age"的列。我使用匹配相当大的范围(而不是只有一列),以避免其他人改变文件会导致任何问题。

这给了我行上的语法错误:

Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1))

我认为这与我如何使用" openWs"这样在VLookUp参数内部。任何人都可以确定我认为错在哪里?

我使用Path和filepath作为变量,因为程序后来每月都会有一个新的Path和一个新的文件路径,这是我知道的最好的方法(基本上,路径和文件路径由月份名称和根据今天的日期我接受的年份名称。

1 个答案:

答案 0 :(得分:3)

Replace all of the "openWs" in front of Match and VLOOKUP with "Application" so that it reads:

Value = Application.VLOOKUP("John",openWs.Range("A1:S30"), Application.Match("Age", openWs.Range("A1:S1")))