
我的單元格值的名稱彼此相當接近。我想提取一個公共子字串。
這是一個例子。
1100_250_Jump_12HR_100MD_S_run1
1100_250_Jump_12HR_100MD_S_run2
1100_250_Jump_12HR_100MD_S_run3
1100_250_Jump_12HR_100MD_S_run4
1101_250_Jump_12HR_100MD_U_run5
1101_250_Jump_12HR_100MD_U_run6
1102_250_Jump_12HR_100MD_U_run7
1102_250_Jump_12HR_100MD_U_run8
1102_250_Jump_12HR_100MD_U_run9
1102_250_Jump_12HR_100MD_U_run10
輸出應該是_250_Jump_12HR_100MD_
如何在Excel中提取公共子字串?
我檢查了類似的問題但找不到答案。
答案1
基於我在評論中發布的連結中的 UDF:
Option Explicit
Public Function CSTMatch3(Target1 As Range, Target2 As Range) As String
CSTMatch3 = ""
Dim myString As String, String1 As String, String2 As String, i As Long, j As Long, noChar As Long
noChar = 0
'The goal here is to assign the larger String to the variable String1
If Target1 = Target2 Then
CSTMatch3 = Target1
Exit Function
End If
If Len(Target1) >= Len(Target2) Then
String1 = Target1
String2 = Target2
Else
String1 = Target2
String2 = Target1
End If
For j = 1 To Len(String2)
For i = 1 To Len(String1) - j
If InStr(String2, Mid(String1, i, j)) Then
myString = Mid(String1, i, j)
noChar = noChar + 1
Exit For
End If
Next i
Next j
CSTMatch3 = myString
End Function
然後,假設您的字串位於 column 中,請像這樣A
使用 UDF :B1
=CSTMatch3(A1,A2)
然後在B2
:
=CSTMatch3(A2,B1)
並人口下降。
現在,任何給定行的列中的單元格B
都會顯示該行之前所有單元格的公共字串A
。