【问题标题】:Doing a vlookup in vba在 vba 中进行 vlookup
【发布时间】:2026-01-23 21:45:02
【问题描述】:

我有 2 个工作簿。在第一个工作簿(包含宏)中,我尝试进行 vlookup 以确定值 strCompany 是否存在于第二个工作簿(tmp_workbook)的 A 列中。

我收到以下 VBA 错误: "无法获取 WorksheetFunction 类的 Vlookup 属性)"

Dim company_exists_in_list As Variant
Dim main_workbook As Workbook, tmp_workbook As Workbook

strCompany = main_workbook.Sheets("Input ID").Cells(10 + i + b * (j - 1), 3).Value 

company_exists_in_list = Application.WorksheetFunction.VLookup(strCompany, tmp_workbook.ActiveSheet.Range("A1:A100000"), 1, False)

【问题讨论】:

  • 如果strCompanyColumn A 中不存在,您将收到错误消息。也许尝试使用.Find,因为它可以更优雅地处理找不到匹配项的情况
  • 删除.WorkSheetFunction 部分。这将允许错误传递到变量中。然后测试变量的错误。

标签: vba


【解决方案1】:

VLookup 在一行中使用,只返回相同的值。您可以使用CountIf 知道该值是否存在。

company_exists_in_list =Application.WorksheetFunction.CountIf(tmp_workbook.ActiveSheet.Range("A1:A100000"),strCompany)

如果该值不为 0,则该公司存在。

【讨论】: