Vba 和 VLookup:插入公式与读取公式的结果

Vba and VLookup: inserting the formula vs reading the result of the formula

我在 Excel vba 工作,想读取 VLookup 公式的结果。

当我将公式本身插入单元格时...

Range(Cells(1, 1), Cells(1, 1)).FormulaR1C1 = "=VLookup(" & ent & ", " & MyName & ", " & fc & ", FALSE)"

...一切正常。但是当我尝试读取相同的公式并将结果保存到变量中时...

MyResult=Application.WorksheetFunction.VLookup(ent, MyName , fc, False)

..., id 不起作用并报告错误编号。 1004.

有什么想法吗?只是为了澄清,这些是公式的参数:范围是用另一个工作簿中的名称定义的。在 "A1" 单元格中插入公式时,这不是问题。

et = 4529
ep = 1
fc = 3
ent = 9992
MyRoute = "C:\WORK\MyEstates\"
MyBook = MyRoute + CStr(et) + "\" + CStr(et) + "-data.xlsx"
MyName = "'" + MyBook + "'!D_" + CStr(ep)

Application.WorksheetFunction.VLookup 需要一个范围作为第二个参数。它不知道要查看哪个工作表或单元格。

这就是您的调用方式:

Application.WorksheetFunction.VLookup(9992, "'C:\WORK\MyEstates2929-data.xlsx'!D_1", 3, false)

尝试更像:

Application.WorksheetFunction.VLookup (9992, worksheets("Sheet1").range("A1:b10"),3,FALSE) 

如果您需要使用变量,请确保将其声明为 Range.

(顺便说一下,这是 Google 搜索中的第一个结果。),


编辑:

后来我意识到你想做什么! :)

你分享了很多信息,但是太复杂了,我不明白问题是什么,还有奇怪的语法(比如Range(Cells(1, 1), Cells(1, 1)))和开放式描述(比如Everything works)让它更混乱。

在你得到答案之前,我不妨为你重写这个问题,这样你下次就可以更好地了解如何让每个人都更轻松。重写你的问题花了我一半的时间来理解它,而且如果你 Googled 错误你自己 就会回答你的问题



Error 1004 on WorksheetFunction.VLookup to external named range

Hi!

I have a VLookup formula which returns the expected result from a when I assign it to a cell using this VBA:

Range("A1").FormulaR1C1 = _
    "=VLookup(9992, '*C:\myPath\fileName.xlsx'!namedRange*, 3, FALSE)"

I can't get the same VLookup formula to work with Application.WorksheetFunction like this:

myResult = Application.WorksheetFunction.VLookup _
    (9992, "'C:\myPath\fileName.xlsx'!namedRange, 3, FALSE)"

VBA stops on the line above with this error:

Run-time error '1004':

Unable to get the VLookup propery of the WorksheetFunction class

接下来,我查找了错误和 第一个 Google search result 是来自 Stack Overflow 的 现有答案 以及我的解决方案 问题.

那么,我……



.

我想这就是我能回答示例问题的最大程度了,因为添加几个链接的过程已经回答了这个问题。

这是您的解决方法:

myResult = Application.WorksheetFunction.VLookup _
    (9992, "'C:\WORK\MyEstates2929-data.xlsx'!D_1", 3, false)

请阅读 How to create a Minimal, Complete, and Verifiable example and How to Ask。感谢您的宝贵时间!