如何获得第一部分匹配的位置
在本文中,我们将尝试获取范围内第一部分匹配的位置。
我们知道,“ link:/ lookup-formulas-excel-match-function [MATCH function]”会返回范围内第一次匹配的索引或位置。
因此,很明显,使用此函数可以获取范围内第一个匹配项的位置。因为它支持`link:/ tips-excel-wildcards [wildcard operator]`,所以我们也可以使用MATCH进行部分匹配。
一旦获得第一个比赛位置,我们就可以做各种事情。类似于使用`link:/ lookup-formulas-excel-index-function [INDEX function]`检索该值或相邻或不相邻的值,或创建动态函数。这取决于您的需求和创造力。
首次发现部分匹配的通用公式
对于硬编码字符串:
=MATCH("str",range,0)
对于单元格引用:
=MATCH(""&cell&"",range,0)
Str:是您要部分匹配范围内的文本或字符串。它可以是任何东西,单元格或硬编码字符串。
范围:这是您将在其中寻找str的范围。
0:精确匹配参数。您也可以使用FALSE。
请注意,我们以前在字符串str的前面和结尾都(冒了风险)。 *
|这是通配符运算符,用于匹配前后具有任何字符串的任何值。 ===让我们看一个例子。
在这里,我有赢,输和平的记录。我们希望获得胜利,失败和并列的第一名。
因此,如果我进行硬编码,则用于查找每个单元格中部分匹配的第一位置的公式将为:
=MATCH("won",A2:A10,0) =MATCH("loss",A2:A10,0) =MATCH("tie",A2:A10,0)
=MATCH(""&C2&"",$A$2:$A$10,0)
工作原理
它只是使用excel的功能来进行部分匹配。 MATCH查找包含*(星号)之间提供的字符串的任何字符串,并返回找到的第一个位置。
使用FirstPartMatch VBA函数在范围中查找第一个部分匹配的位置如果在excel的vba模块中的vba代码下面复制,则可以使用此函数获取部分匹配的第一个位置。对于上面的示例,只需编写以下公式:
=FirstPartMatch(C2,$A$2:$A$10)
您将获得第一个比赛的位置。像这样。
工作原理
第一个参数是要搜索部分匹配的字符串。
第二个参数是您要获取字符串位置的范围。
=FirstPartMatch(str,range)
要将此公式用于部分匹配,请在VBA模块中复制以下代码。
Function FirstPartMatch(str As String, rng As Range) Dim tmp, position As Long position = 0 tmp = 0 For Each cll In rng tmp = tmp + 1 If InStr(1, LCase(cll.Value2), LCase(str)) > 0 Then position = tmp Exit For End If Next cll If position Then FirstPartMatch = position Else FirstPartMatch = "#NA" End If End Function
位置
的区分大小写的部分匹配在用户定义的用于查找第一个部分匹配项的功能之上,将不区分大小写。如果要区分大小写,请从第7行删除Lcase函数。那么区分大小写的代码将是:
您会看到在这种情况下找不到“获胜”和“平局”。由于没有小写的赢或平局。
Function FirstPartMatchCASE(str As String, rng As Range) Dim tmp, position As Long position = 0 tmp = 0 For Each cll In rng tmp = tmp + 1 If InStr(1, cll.Value2, str) > 0 Then position = tmp Exit For End If Next cll If position Then FirstPartMatchCASE = position Else FirstPartMatchCASE = "#NA" End If End Function
是的,这些是在Excel中找到第一个部分匹配的位置的方法。我告诉过您,您可以使用预定义的MATCH函数和用户定义的匹配函数来找到第一个部分匹配位置。
如果您还有其他想法或问题,请在下面的评论部分中与我们分享。
相关文章:
链接:/ lookup-formulas-excel-match-function [如何在Excel中使用MATCH函数]`