用 VBA 能实现 VLOOKUP 函数的功能吗如果可以,代码怎么写

用 VBA 能实现 VLOOKUP 函数的功能吗如果可以,代码怎么写,第1张

Sub a()

    Dim x%

    For x = 2 To 4

        Sheets(2)Cells(x, 2) = ApplicationVLookup(Sheets(2)Range("a" & x), Sheets(1)Range("a:b"), 2, False)

    Next x

End Sub

如附件!

Dim arr, d

arr = Range("g2:h" & [g1048576]End(3)Row)

Set d = CreateObject("ScriptingDictionary")

For i = 2 To [g1048576]End(3)Row

dAdd Cells(i, 7), Cells(i, 8)

Next

For i = 2 To [a1048576]End(3)Row

If dExists(Cells(i, 1)) Then Cells(i, 2) = ditems

Next

---------------------------

数据量12000行。

用常规的VLOOKUP,用时大约25秒,用数组结合字典法,用时15秒。

WorksheetFunctionVLookup

方法

在表格数组的首列查找值,并由此返回表格数组当前行中其他列的值。

语法

表达式VLookup(Arg1, Arg2,

Arg3, Arg4)

表达式   一个代表 WorksheetFunction 对象的变量。

参数

名称

必选/可选

数据类型

说明

Arg1    必选    Variant    Lookup_value - 要在表格数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)第一列中搜索的值。Lookup_value

可以为值或引用。如果 lookup_value 小于 table_array 第一列中的最小值,则 VLOOKUP 将返回错误值 #N/A。  

Arg2    必选    Variant    Table_array - 两列或更多列数据。可以使用对区域或区域名称的引用。table_array

第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。  

Arg3    必选    Variant    Col_index_num - table_array 中待返回的匹配值的列号。col_index_num 为 1

时,返回 table_array 第一列中的值;col_index_num 为 2 时,返回 table_array

第二列中的值,依此类推。  

Arg4    可选    Variant    Range_lookup - 一个逻辑值,指定希望 VLookup 方法查找精确的匹配值还是近似匹配值:  

返回值

Variant

说明

VLookup 中的 V 表示垂直方向。当比较值位于需要查找的数据左边的一列时,可以使用 VLookup 方法,而不用

HLookup 方法。

如果 Col_index_num 小于 1,则 VLookup 方法将生成错误。

如果 Col_index_num 大于 table_array 中的列数,则 VLookup 方法将生成错误。

如果 Range_lookup 为 TRUE 或被省略,则返回精确匹配值或近似匹配值。如果找不到精确匹配值,则返回下一个小于 lookup_value

的最大值。

table_array 第一列中的值必须以升序排序;否则 VLookup 方法可能无法给出正确的值。

如果 Range_lookup 为 FALSE,VLookup 方法将只查找精确匹配值。在此情况下,table_array

第一列中的值不需要排序。如果 table_array 第一列中有两个或更多个值与 lookup_value

匹配,则使用找到的第一个值。如果找不到精确匹配值,则生成错误。

在 table_array 第一列中搜索文本值时,请确保 table_array 第一列中的数据没有前置空格、尾部空格、直引号(' 或 ")与弯引号(‘

或 “)不一致或非打印字符。在上述情况下,VLookup 方法可能给出不正确或非预期的值。有关如何清除或剪裁值的信息,请参阅 Clean 和 Trim 方法。

在搜索数字或日期值时,请确保 table_array 第一列中的数据未存储为文本值。在此情况下,VLookup 方法可能给出不正确或非预期的值。

如果 range_lookup 为 FALSE,而 lookup_value 为文本,则可以在 lookup_value 中使用通配符,包括问号 ()

和星号 ()。问号可匹配任意的单个字符;星号可匹配任意一串字符。如果要查找实际的问号或星号,则请在该字符前键入一个波形符 (~)。

以上就是关于用 VBA 能实现 VLOOKUP 函数的功能吗如果可以,代码怎么写全部的内容,包括:用 VBA 能实现 VLOOKUP 函数的功能吗如果可以,代码怎么写、VBA问题,用数组得到VLOOKUP结果,如图要求,谢谢!、VBA VLOOKUP代码如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10640706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存