要求比较两个字符串,并把这两个字符串中最长相同部分提取出来,不区分大小写。如下图所示,“字符串1”和“字符串2”为原始数据,“最长相同部分”为待提取的结果(为了看得更清楚些,已把相同部分用红颜色标出了)。
自定义函数如下(收录时作了部分修改):
Function XiangTong(s1, s2, OptionaldxxAs Boolean=False) As String
"功能:提取两个字符串中最长相同部分
"参数s1、s2:为需要比较的两个字符串或单元格
"参数dxx: 是否区分大小写
"dxx = False,默认值,不区分大小写
"dxx = True,区分大小写
"为提高效率,设置长度小的字符串作为s1
If Len(s1) > Len(s2) Then s = s2: s2 = s1: s1 = s
k = IIf(dxx, 0, 1)
n = Len(s1)
For i = n To 1 Step -1
For j = 1 To n - i + 1
z = Mid(s1, j, i)
If InStr(1, s2, z, k) Then
XiangTong = z
Exit Function
End If
Next
Next
End Function
调用方法如下:
1、不区分大小写的:
在C2单元格输入公式:
=XiangTong(A2,B2)
或:=XiangTong(A2,B2,False)
或:=XiangTong(A2,B2,0)
并向下拖动到最后一个单元格。
2、区分大小写的:
在C2单元格输入公式:
=XiangTong(A2,B2,1)
或:=XiangTong(A2,B2,True)
并向下拖动到最后一个单元格。