无法获取WorksheetFunction类的Vlookup属性

3

我正在尝试从名为CashReward的电子表格中查找员工姓名和导入日期。

下面的代码出现了错误信息“无法获取WorksheetFunction类的Vlookup属性”。我尝试将数据类型更改为CDateCStr,但没有用。

concat = EmpName & GetDate

BasicSal = WorksheetFunction.VLookup(CVar(concat), Sheets("CashReward").Range("G3:K" & Cashlastrow), 2, False)

Thanks in advance


你的工作表中G列是什么类型的数据? - David Zemens
这是员工的姓名和导入日期,格式为“Richard Smith 18/03/2013 11:05:43”。 - Samantha Monti
这似乎对我来说很有效。为什么你在 concat 变量上使用 CVar() 函数?concat 是怎样确定维度的--作为字符串? - David Zemens
尝试运行 BasicSal = WorksheetFunction.Match(concat,Sheets("CashReward").Range("G:G"), False),并告诉我它返回了什么。 - David Zemens
无法获取WorksheetFunction类的匹配属性的错误消息。 - Samantha Monti
显示剩余7条评论
2个回答

3

如果在给定的范围内找不到您搜索的字符串,就会发生这种情况。

请注意,范围内的数据需要按升序排序,请参见http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx

table_array中第一列的值必须按升序排列;否则,VLOOKUP可能无法给出正确的值。您可以通过选择“数据”菜单中的“排序”命令并选择“升序”来将值按升序排列。有关更多信息,请参见默认排序顺序。


范围肯定没问题,我已经进行了双重和三重检查。感谢您的回答。 - Samantha Monti
是的,搜索字符串没问题。我认为这与数据类型有关,因为当我只使用员工姓名而不使用导入日期时,它可以正常工作。 - Samantha Monti
concat变量将包含一个字符串。这应该是一个简单的字符串匹配,因此如果concat包含在G列中存在的字符串并且范围已排序,则应该可以工作。 - GTG
我尝试了直接输入vlookup搜索,它可以正常工作。但变量出现问题,我不确定原因,已经尝试更改变量的数据类型,但仍然无效。 - Samantha Monti
1
你有找到解决方法吗?我遇到了同样的问题,之前正常工作的WorksheetFunction.VLookup突然停止工作。这是在我进行一些变量名称清理后发生的。我改变的只是名称的大小写,以使它们更易读(vlookup中参数变量没有任何更改-整个语句都没有更改)。幸运的是,我有模块的备份副本,所以我可以将其粘贴回去,但我很好奇是否有人已经弄清楚为什么函数会因为没有明显的逻辑原因而开始表现出这种方式。 - blackworx

-2
任何人都可以解决这个运行时错误 '424' 对象要求。
Private Sub VLOOKUP()
Dim I As Integer
Dim J As Integer
Dim K As Integer

For I = 2 To 14

For J = 1 To 1
For K = 2 To 2


Sheet2.Cells(I, K) = Appliaction.WorksheetFunction.VLOOKUP(Sheet2.Cells(I, J), Sheet1.Range("$A$1:$C$307"), 2, False)
Next K
Next J
Next I

结束子程序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接