【问题标题】:Using an entire sheet as the VLOOKUP table array使用整个工作表作为 VLOOKUP 表数组
【发布时间】:2015-02-19 00:04:47
【问题描述】:

我有一个完全由数据组成的工作表。工作表已在代码中声明和设置,我也将关闭工作表中的第一列。

我试过了,但遇到了错误,但想知道这是否可能。我可以将整个工作表设置为可以传递到 VLOOOKUP 的范围吗?

.Cells(row, col) = WorksheetFunction.VLookup("key", sheetname, [SomeCol].Column, 0)

错误为 1004:无法获取 WorkSheetFunction 类的 VLOOKUP 属性。

【问题讨论】:

  • 显示您的代码,并提供确切的错误。你的床单真的满了吗? 1M 行 x 16k 列数据?太多了。
  • 我的意思是我只使用这张表来存储要查找的数据。它没有完全填满。我只是想知道是否可以不在工作表中定义范围。

标签: vba vlookup


【解决方案1】:

如果数据是一个连续的表(没有空行或空列)那么(例如)

Range("A1").CurrentRegion

将返回包含数据的范围。

.Cells(row, col) = WorksheetFunction.VLookup("key", _
               Worksheets("sheetName").Range("A1").CurrentRegion, _
               colNum, False)

仅供参考,如果 vlookup 找不到匹配项,上述方法将导致运行时错误。此版本通过删除 WorksheetFunction:

来避免这种情况
Dim v

v = Application.VLookup("key", _
               Worksheets("sheetName").Range("A1").CurrentRegion, _
               colNum, False)

.Cells(row, col) = IIf(IsError(v), "Not found", v)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多