vba中的查找匹配函数

最朴树的find

例子:

Range("G4") = Range("B:B").Find(Range("G3")).Row

解释:
Range(“B:B”)表示要查找的位置在第B列
Find(Range(“G3”))表示要查找G3单元格中的值
Row返回查找到的位置的行数

工作表函数Match

例子

Range("A1") = application.WorksheetFunction.Match(Range("G3"), Range("B:B"), 0)

解释:
application.WorksheetFunction.Match是函数的完整路径
Match函数的各个参数的说明
match(Lookup_value, Lookup_array , Match_type)。

  • Lookup_value(需要在表中查找的值) -
  • Lookup_array(可能包含所要查找的值的连续单元格区域,Lookup_array
    必须为数组或数组引用)
  • Match_Type(数字 -1、0 或 1。Match_type 指明 Microsoft Excel 如何将
    lookup_value 与 lookup_array 中的值进行匹配)
    如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array 必须按升序排列:...、-2、-1012, ...、A-Z、FALSETRUE。

    如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。

    如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array 必须按降序排列:TRUEFALSE、Z-A、 ...2、 10、 -1、 -2...,等等。

    如果省略 match_type,则假设为 1

此外:

函数 MATCH 返回 lookup_array 中目标值的位置,而不是数值本身。例如,MATCH("b",{"a","b","c"},0) 返回 2,即"b"在数组 {"a","b","c"} 中的相应位置。

匹配文本值时,函数 MATCH 不区分大小写字母。

如果函数 MATCH 未能找到匹配值,则返回错误值 #N/A。

如果 match_type 为 0 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符、问号 (?) 和星号 (*)。问号匹配任意单个字符;星号匹配任意字符序列。如果您要查找实际的问号或星号本身,请在该字符前键入波形符 (~)。

工作表函数vlookup

这个函数比较高大上,适用的地方,比如要查找某个产品型号,返回该型号的单价
vba中的查找匹配函数_第1张图片

当然也可以用find进行查找

Mrow = Range("B:B").Find(Range("G3")).Row ' 在 B 列中查找匹配 G3 单元格的行
Range("G4") = Range("D" & Mrow) ' 在 G4 单元格中返回对应行 D 列的数据

用vloookup的话就比较简单:

Range("G4") = Application.WorksheetFunction.VLookup(Range("G3"), Range("B:E"), 3, 0)

这个函数的用法如下:
vlookup(lookup_value, table_array, col_index, range_lookup)

  • Lookup_value - 要在表格数组第一列中搜索的值。Lookup_value 可以为值或引用。如果 lookup_value 小于
    table_array 第一列中的最小值,则 VLOOKUP 将返回错误值 #N/A。
  • Table_array - 两列或更多列数据。可以使用对区域或区域名称的引用。table_array 第一列中的值是由
    lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。不区分大小写。
  • Col_index_num - table_array 中待返回的匹配值的列号。col_index_num 为 1 时,返回
    table_array 第一列中的值;col_index_num 为 2 时,返回 table_array 第二列中的值,依此类推。
  • Range_lookup-一个逻辑值,指定是否希望VLookup方法查找精确匹配还是近似匹配:

其他说明

    如果 Range_lookup 为 TRUE 或被省略,则返回精确匹配值或近似匹配值。如果找不到精确匹配值,则返回下一个小于 lookup_value 的最大值。 table_array 第一列中的值必须以升序排序;否则 VLookup 方法可能无法给出正确的值。

    如果 Range_lookup 为 FALSE,则VLookup方法将只查找完全匹配。在这种情况下,不需要 table_array 第一列中的值进行排序。如果有两个或多个值 table_array 第一列中的符合 lookup_value,则使用找到的第一个值。如果找不到完全匹配,则生成错误。

如果 range_lookup 为 FALSE,而 lookup_value 为文本,则可以在 lookup_value 中使用通配符,包括问号 (?) 和星号 (*)。问号可匹配任意的单个字符;星号可匹配任意一串字符。如果要查找实际的问号或星号,则请在该字符前键入一个波形符 (~)。

你可能感兴趣的:(杂项,vba,match,vlookup)