正确使用Excel匹配功能查找部分匹配


3

我拼命想让我的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


MATCH是不正确的功能。毕竟,13与13234不同。 FIND可以返回一组错误和数字,具体取决于是否找到了部分字符串,但是,如果没有VBA,获取所需结果将是一个问题。匹配单元的数量是否仅限于两个(或其他一些值)?
罗恩罗森菲尔德2015年

我知道13不一样,这就是我的标题被称为“找到部分匹配”的原因,如果你能更好地表达它,可以随意建议编辑。没有我搜索的数字实际上是像“F45234GWE”这样的关键。无论如何,感谢您的帮助,我将检查查找功能。
RayofCommand 2015年

我评论了自从你0用于match_type参数以来的完全匹配。但是,正如我所写,除非可能匹配的数量是固定的或有限的,否则您将需要辅助列和复杂公式,或简单的VBA例程。
罗恩罗森菲尔德2015年

该死的,我的德国版excel只接受德国公式:&
RayofCommand 2015年

那里有各种各样的翻译。做互联网搜索。
罗恩罗森菲尔德2015年

Answers:


1

考虑以下ü SER d efined ˚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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.