这就是我想在Excel中做的事情。
A1 =你好我的名字是约翰 B1 =你好我的名字是乔
C1 =你好,我的名字是
A2 =约翰明天出去的地方? B2 =乔明天出去哪儿?C1 =在哪里
如您所见,我想比较2个单元格并返回公共字符串,直到存在差异。 (一旦有变化就停止比较)
我见过类似here的内容,但与我的要求略有不同。
提前致谢。
答案 0 :(得分:1)
你应该寻找一种更有效的方式,但这里有一个在VBA:
Dim stringA As String
Dim stringB As String
Dim finalString As String
Dim currentLetter As Integer
For currentLetter = 0 To Len(stringA)
If Left(stringA, currentLetter) = Left(stringB, currentLetter) Then
finalString = Left(stringA, currentLetter)
Exit For
End If
Next
用你的单元替换字符串变量并完成它。
答案 1 :(得分:0)
我喜欢这个挑战,所以这里有一个我提出的公式解决方案:
=LEFT(A1,LOOKUP(2,1/(MID(LEFT(A1,MATCH(FALSE,INDEX(MID(A1,ROW($1:$99),1)=MID(B1,ROW($1:$99),1),),0)-1),ROW($1:$99),1)=" "),ROW($1:$99))-1)
答案 2 :(得分:-1)
Sub CommonText()
'Finds the longest substring that string A and string B have in common.
sA = "Hey, My Name is John"
sB = "My Name is Eric"
Dim iLtrA As Integer
Dim iLtrB As Integer
Dim sThisString As String
Dim sFinalString As String
sFinalString = ""
For iLtrA = 1 To Len(sA)
For iLtrB = 1 To Len(sB)
For n = 1 To Application.Min(Len(sA), Len(sB))
'mid(text,start, length)
If Mid(sA, iLtrA, n) = Mid(sB, iLtrB, n) Then
sThisString = Mid(sA, iLtrA, n)
If Len(sThisString) >= Len(sFinalString) Then
sFinalString = sThisString
End If
End If
Next n
Next iLtrB
Next iLtrA
Debug.Print sFinalString
End Sub