我正在寻找公式的帮助。
我需要比较两个单元格(而不是列)中的文本。
其中一个单元格具有姓氏,另一个单元格可能包含姓氏的一部分,附加数字和字母(不按任何特定顺序)。这些是我们想要找到的对。
并非所有单元格都匹配,但对于文本部分匹配的单元格,则需要"MATCH"
之类的单元格。
例如,在单元格E2= 000034568MILL WALLI
和单元格J2=WALLINGER
中应该带有MATCH
,因为单元格WALLI
中的E2
与文本的一部分匹配。< / p>
另一个例子:
E2= Benjamin P Rouamba
和J2=Roumbamoore
应该带回来。
我希望这是有道理的,并且有一个可能的公式。
答案 0 :(得分:1)
Excel中没有内置功能可以满足您的需求。您需要在VBA项目模块中自定义您自己的公式。所以我设法编写了一个计算匹配数的函数。 Adter将其设置为模块,您可以将其用作工作表中的常规公式。
如果您不熟悉VBA编程,请不要担心。按照说明将下面的代码复制到VBA模块中。
Function CountPartialMatch(R1 As String, R2 As String, M As Long) As Long
Dim n As Long, L1 As Integer, L2 As Integer, Min As Integer, C As Integer, S1 As Integer, S2 As Integer
n = 0
L1 = Len(R1)
L2 = Len(R2)
Min = Application.WorksheetFunction.Min(L1, L2)
For C = M To Min
For S1 = 1 To (L1 - (C - 1))
For S2 = 1 To (L2 - (C - 1))
If Mid(R1, S1, C) = Mid(R2, S2, C) Then n = n + 1
Next S2
Next S1
Next C
CountPartialMatch = n
End Function
此公式需要3个参数:
=CountPartialMatch(First_Cell, Second_Cell, Min_Chrt)
参数Min_Chrt
是匹配必须具有的最小字符数。因此,如果您声明2,它将计算所有匹配2个字符,3个字符,4,5,6 ...它减少了巧合的数量。如果为1,则公式将计为每个“a”=“a”,字母=字母。
请告诉我它是否适合您!
答案 1 :(得分:0)
如果您愿意使用 VBA用户定义函数,您可以试试这个:
<强> Cells_fMatch 强>
如果输入值(arguments)出现任何不一致错误,则返回!Err
,如果找到匹配则返回Match
,否则返回NO Match
} (可以根据需要更改返回值)。
语法: Cells_fMatch( sCll_1, sCll_2[, iLenMin] )
参数&amp;说明强>
sCll_1 :要比较的字符串1
sCll_2 :要比较的字符串2
iLenMin :可选匹配的比较字符串的最小长度。默认值为1. 数据类型字节接受最大值255,如果需要更长的长度,则相应地更改。
该函数结合了For...Next
语句和Instr
函数来执行比较,从而提供快速准确的结果。
Public Function Cells_fMatch(sCll_1 As String, sCll_2 As String, Optional iLenMin As Byte = 1) As String
Dim blCllMatch As Boolean
Dim sCllVal As String
Dim i As Integer
Rem Set Default Result
Cells_fMatch = "!Err"
Rem Validate Input
If Len(sCll_1) < iLenMin Then Exit Function
If Len(sCll_2) < iLenMin Then Exit Function
Rem Compare Cell Values
For i = 1 To (1 + Len(sCll_1) - iLenMin)
sCllVal = Mid(sCll_1, i, iLenMin)
If InStr(sCll_2, sCllVal) > 0 Then
blCllMatch = True
Exit For
End If: Next
Rem Set Results
Cells_fMatch = IIf(blCllMatch, "Match", "NO MATCH")
End Function
示例:强>
要比较匹配至少5个连续字符(值E2
和J2
的单元格000034568MILL WALLI
和WALLINGER
中的字符串,请使用以下公式:
=Cells_fMatch(E2,J2,5)
这些页面将进一步解释函数中使用的资源:
Function Statement,Dim Statement,
If...Then...Else Statement, For...Next Statement,InStr Function。