
Tengo valores de celda con nombres bastante cercanos entre sí. Me gustaría extraer una subcadena común.
Aquí hay un ejemplo.
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
La salida debe ser_250_Jump_12HR_100MD_
¿Cómo puedo extraer una subcadena común en Excel?
Revisé preguntas similares pero no pude encontrar la respuesta.
Respuesta1
Basado en la UDF en el enlace que publiqué en los comentarios:
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
Luego, suponiendo que sus cadenas estén en la columna A
, use la UDF de B1
esta manera:
=CSTMatch3(A1,A2)
Luego en B2
:
=CSTMatch3(A2,B1)
Y poblar hacia abajo.
Las celdas de la columna B
de cualquier fila determinada ahora muestran la cadena común para todas las celdas A
hasta esa fila.