You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel WorksheetFunction.VLookup返回不一致结果的技术求助

求助:VBA中VLookup返回1004错误但工作表公式正常的问题

我正在处理大型Excel工作簿(含3200行VBA代码,大小127,536 KB),目标是检测公司各部门间/内部的图纸编号冲突。工作簿包含5个工作表,对应各部门的预留图纸编号列表:

  • 每个工作表有5万至20万行数据,2-5列文本格式,目前仅使用第一列
  • 图纸编号最长24位,包含字母、数字及特殊字符,示例:_38017、075242-DIV

我的设备是Dell Precision 7770(i9处理器、64GB内存、6TB存储),工作簿加载需15-20秒,运行处理449384行数据需约35分钟。

现在遇到一个奇怪的问题:我用自定义函数IsItemNumberStrInNumLogWks检测图纸编号是否被某部门使用,调用Application.WorksheetFunction.VLookup时,明明存在的编号却返回1004错误,但在工作表中用VLookup公式可正常找到。

调用代码及参数

crntItemNumber = "22613900" :  gcNumLogNameTab = "Div1_Number_Log"
gcNumLogRangeDiv1 = "A2:B67113"

If IsItemNumberStrInNumLogWks(crntItemNumber, gcNumLogNameTab, gcNumLogRangeHTPG) Then .....

自定义函数实现

Public Function IsItemNumberStrInNumLogWks( _
  ByVal dwgNumStr As String, _
  ByVal numLogTabName As String, _
  ByVal strLogNumRange As String) As Boolean

    Dim numLogWks As Worksheet
    Dim numberLogRange As Range
    Dim numLogNumber As String: numLogNumber = "Not Found"
    
    On Error GoTo SetAsFalse
    
    Set numLogWks = Worksheets(numLogTabName)
    Set numberLogRange = numLogWks.Range(strLogNumRange)
    
    numLogNumber = Application.WorksheetFunction.VLookup(dwgNumStr, numberLogRange, 1, False)

SetAsFalse:
    If Err.Number = 1004 Then
       IsItemNumberStrInNumLogWks = False
      Else
       IsItemNumberStrInNumLogWks = True
    End If

End Function

数据示例(Notepad++查看)

Div1_Number_Log工作表数据:

22613700    C/Z 6 BASE, PIPE DOWN
22613900    VENTURI SUPPORT RIGHT, ET-5H
22626600    ACCUMULATOR BASE

All Parts All Divisions工作表数据:

C/Z 6 BASE, PIPE DOWN   22613700    Component
VENTURI SUPPORT RIGHT, ET-5H    22613900    Component
ACCUMULATOR BASE    22626600    Component

工作表公式验证

使用VLookup公式可正常找到编号:
=IFERROR(VLOOKUP(A3,HTPG_Number_Log!$A$2:B$67113,1,FALSE),"Not Found")

但单步调试代码时,针对编号22613900仍出现1004错误,恳请各位帮忙排查问题,谢谢!

内容的提问来源于stack exchange,提问作者Scott M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:23:17