Это не полностью отвечает на вопрос, но я думаю, что это даст вам то, что вам нужно, чтобы получить его.Попробуйте.Поместите следующий код в новый модуль:
Public Sub FindStrings()
Dim rng1 As Excel.Range
Dim rng2 As Excel.Range
Set rng1 = ActiveSheet.Range("A1")
Set rng2 = ActiveSheet.Range("A2")
Dim i As Integer
Dim j As Integer
Dim searchVal As String
For i = 3 To Len(rng2)
For j = 1 To Len(rng1)
searchVal = Mid(rng1, j, i)
If Len(searchVal) < i Then Exit For
If InStr(1, rng2, searchVal) Then Debug.Print searchVal
Next j
Next i
End Sub
В ячейку A1
поместите example.net / test
В ячейку A2
поместите www.test.com
Результат
tes
est
test
ОБНОВЛЕНИЕ
Я обновил код, чтобы найти минимум4 символа вместо 3 (как вы упомянули выше).Кроме того, я догадался, что вы не захотите возвращать строки, такие как www.
и .com
, а также строки с символом /
или .
.Так что код вытягивает их.Кроме того, он сравнивает каждую комбинацию столбцов.
Option Explicit
Public Sub CompareStrings()
Dim Arr As Variant
Dim i As Integer
Dim j As Integer
Dim StartRange As Excel.Range
Dim SearchRange As Excel.Range
Dim Counter As Integer
Dim ComparableRange As Variant
Dim Comparable As Integer
Dim Compared As Integer
Dim SearchVal As String
Set StartRange = ActiveSheet.Range("A1")
Counter = 0
For Each ComparableRange In ActiveSheet.Range("A1:A2")
Set SearchRange = Range(StartRange.Offset(Counter), Cells(StartRange.Offset(Counter).Row, Columns.Count).End(xlToLeft))
Arr = Application.Transpose(Application.Transpose(SearchRange.Value))
Debug.Print "Row " & SearchRange.Row & ":"
For j = LBound(Arr) To UBound(Arr)
For i = j + 1 To UBound(Arr)
For Comparable = 4 To Len(Arr(j))
For Compared = 1 To Len(Arr(i))
SearchVal = Mid(Arr(j), Compared, Comparable)
If InStr(1, SearchVal, ".") = 0 Then
If InStr(1, SearchVal, "/") = 0 Then
If Len(SearchVal) < Comparable Then Exit For
If InStr(1, Arr(i), SearchVal) > 0 Then Debug.Print vbTab & SearchVal
End If
End If
Next Compared
Next Comparable
Next i
Next j
Counter = Counter + 1
Next ComparableRange
End Sub
При сравнении test.com/q=age
с another.com?q=age
Вы все равно получите такие результаты, как:
q=ag
=age
q=age
... хотя я подозреваю васхочу только третий.Чем длиннее соответствующие строки, тем больше результатов вы получите.Последние результаты, которые вы, вероятно, захотите.