正确使用 Excel 匹配函数查找部分匹配

正确使用 Excel 匹配函数查找部分匹配

我拼命想让我的 excel 做我想做的事。我想在 A1 到 A5 列中找到写在 B1 列中的字符串。B2 列中的字符串也应在 A1:A5 中进行搜索。

例子:

______________
|  A    |  B  |
|_______|_____|
|       |     |
| 13234 | 12  |
|_______|_____|
|       |     |
| 15485 | 13  |
|_______|_____|
|       |     |
| 13234 | 23  |
|_______|_____|
|       |     |
| 78165 | 132 |
|_______|_____|

现在 C1 到 C5 的输出将是:

C1 = no match
C2 = A1,A3
C3 = A1,A3
C4 = A1,A3

我尝试使用匹配函数如下:

=MATCH (A1, A1:A5, 0)

遵循此处的语法:

http://www.techonthenet.com/excel/formulas/match.php

答案1

考虑以下驅動已定义F涂油礼(UDF)

Public Function WhereIs(rIn As Range, rList As Range) As String
   Dim s1 As String, r As Range
   Dim s2 As String
   WhereIs = ""
   s1 = rIn.Text

   For Each r In rList
      s2 = r.Text
      If InStr(1, s2, s1) > 0 Then
         If WhereIs = "" Then
            WhereIs = r.Address(0, 0)
         Else
            WhereIs = WhereIs & "," & r.Address(0, 0)
         End If
      End If
   Next r

   If WhereIs = "" Then WhereIs = "no match"
End Function

其中第一个参数是要寻找的值,第二个参数是列表。

在此处输入图片描述

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=WhereIs(B1,A1:A4)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容