Excel 带输入的VBA VlookUp无法获取结果,是代码错误还是数据类型不匹配?

Excel 带输入的VBA VlookUp无法获取结果,是代码错误还是数据类型不匹配?,excel,vba,input,vlookup,Excel,Vba,Input,Vlookup,嗨 目前,我正在尝试自动化最耗时的excel文件之一。 显然,VlookUp是个问题 一些背景作为新的VBA开发人员: 我使用inputbox获取特定的工作表名称,以便用它更新我所有的vlookups。是的,每隔几周就会发生一次。而且我不能用手工操作,这需要很多时间 长话短说:带求值公式的Vlookup不是获取数据,而是用心爱的#值进行响应!在某些细胞中 当我被这个问题困住的时候,我想还有另一个问题,因为我无法在我的整个范围内得出这个公式。但这可以用范围来解决,比如BS13:BS37020,对

目前,我正在尝试自动化最耗时的excel文件之一。 显然,VlookUp是个问题

一些背景作为新的VBA开发人员:

  • 我使用inputbox获取特定的工作表名称,以便用它更新我所有的vlookups。是的,每隔几周就会发生一次。而且我不能用手工操作,这需要很多时间

  • 长话短说:带求值公式的Vlookup不是获取数据,而是用心爱的#值进行响应!在某些细胞中

  • 当我被这个问题困住的时候,我想还有另一个问题,因为我无法在我的整个范围内得出这个公式。但这可以用范围来解决,比如BS13:BS37020,对吗?但这会给Vlookup的第一个参数带来问题,因为它会改变

代码如下:

Dim myValue As Variant

myValue = InputBox("Please enter sheet argument for Vlookup including apostrophe and !")


Worksheets("191207").Range("BS13").Formula = Evaluate("VLOOKUP($C13, """ & myValue & """  $C$2:$CD$92000,14,0)")
'                desired vlookup                                =VLOOKUP($C13,191207!$C$2:$CD$92000,14,0)
公式中的VlookUp与VBA中的VlookUp有何不同?或者,如果我的方法对VlookUp不正确,请提供建议


提前谢谢。

这似乎更符合您的要求:

Dim myValue As Variant

myValue = InputBox("Please enter sheet name")

Worksheets("191207").Range("BS13").Formula = _
           "=VLOOKUP($C13, '" & myValue & "'!$C$2:$CD$92000,14,0)")

看起来这更像是你想要的:

Dim myValue As Variant

myValue = InputBox("Please enter sheet name")

Worksheets("191207").Range("BS13").Formula = _
           "=VLOOKUP($C13, '" & myValue & "'!$C$2:$CD$92000,14,0)")

您能给我们一个您正在输入的示例表名吗?旁注:您正在输入一个通过
评估
获得的值,并且您想作为
公式
输入到您的
范围
…所以让我问您,您真的想输入公式吗?或者您只是想要返回的值。请注意,这里有VBA函数。您好,@BigBen My bad,示例工作表名称:is 191107或191115谢谢JvdV,我只需要这些函数来引用某些工作表,因为它们将发生更改。你能详细说明你的想法吗?应该是
工作表(“191207”)。评估(…)
-指定工作表以确保公式在正确的上下文中评估。@BigBen你是个天才。我呢?瞎子,没看见那个人来了。所以,它应该是这样的:
Worksheets(“191207”).Range(“BS13”).Formula=Evaluate.Worksheets(“myValue”),(“VLOOKUP($C13,$C$2:$CD$92000,14,0)”)
Edit:显然不是,不是这样,但我知道了方向。谢谢您给我们一个您正在输入的示例表名称?旁注:您正在输入一个通过
评估
获得的值,并且您想作为
公式
输入到您的
范围
…所以我问您,您真的想输入公式吗?或者您只是想要返回的值。请注意,这里有VBA函数。您好,@BigBen My bad,示例工作表名称:is 191107或191115谢谢JvdV,我只需要这些函数来引用某些工作表,因为它们将发生更改。你能详细说明你的想法吗?应该是
工作表(“191207”)。评估(…)
-指定工作表以确保公式在正确的上下文中评估。@BigBen你是个天才。我呢?瞎子,没看见那个人来了。所以,它应该是这样的:
Worksheets(“191207”).Range(“BS13”).Formula=Evaluate.Worksheets(“myValue”),(“VLOOKUP($C13,$C$2:$CD$92000,14,0)”)
Edit:显然不是,不是这样,但我知道了方向。谢谢,有时候最简单的解决方案就是最好的。不知怎么的,我错过了那个。谢谢好吧,有时候最简单的解决方案就是最好的。不知怎么的,我错过了那个。非常感谢。