【问题标题】:Vba and VLookup: inserting the formula vs reading the result of the formulaVba 和 VLookup:插入公式与读取公式的结果
【发布时间】:2017-11-29 10:30:10
【问题描述】:

我在 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)

【问题讨论】:

标签: vba excel vlookup


【解决方案1】:

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

这就是你所说的:

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

试试类似的东西:

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

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

(顺便说一句,那是谷歌搜索的第一次点击。)


编辑

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

您分享了很多信息,但内容非常复杂,以至于我无法理解问题所在,而且奇怪的语法(如 Range(Cells(1, 1), Cells(1, 1)))和开放式描述(如 Everything works)使问题更加混乱。

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



WorksheetFunction.VLookup 上的错误 1004 到外部命名范围

嗨!

我有一个 VLookup 公式,它从 named range in another workbook 当我使用它分配给一个单元格时 这个 VBA:

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

我无法使用相同的 VLookup 公式 Application.WorksheetFunction 像这样:

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

VBA 在上面的行中停止this error:

运行时错误“1004”:

无法获取 WorksheetFunction 类的 VLookup 属性

接下来,我查找了错误和第一个Google search resultan existing answer from Stack Overflow with the solution to my problem

所以,我.......



.

我想这就是我可以解决的示例问题,因为添加几个链接的过程会回答这个问题。

这是你的解决方法:

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

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

【讨论】:

  • 亲爱的ashleedawg,我没问就跑了。我只是想自己解决问题或提出不同的问题,因为我正在了解更多有关该问题的信息。有时某些事情并没有按预期工作,但不知道要问什么问题。就我而言,我不太习惯用 vba 编程,所以不知道如何管理问题,甚至检查变量... 很抱歉给您带来不便,非常感谢您的帮助。
  • 好吧,我的错。现在您有了上面的解决方案(对吗?),并且您知道收到错误消息的第一步是弄清楚错误试图告诉您什么(在 Google 的帮助下)。有了可用的过多信息,有效的搜索是一种通过实践学习的技能。相信我,我知道不知道要问的正确问题是什么感觉,这就是为什么我重新写了你的问题,现在你知道了。但请放心,您将遇到的任何问题已经在网上讨论过无数次,所以这是一个很好的起点。 (不仅仅是编码;_any_issue!)祝你好运!
  • 非常详细的分步说明和有用的食谱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多