從 Excel 範圍中提取唯一子字串

從 Excel 範圍中提取唯一子字串

我的單元格值的名稱彼此相當接近。我想提取一個公共子字串。

這是一個例子。

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

在此輸入影像描述

相關內容