Из такого разношерстного набора выбрать только уникальные tif.ru, sb.ru, top.jj.ru, alism.polo.ru, обрезав лишнее. НАЙТИ/ЗАМЕНИТЬ - почему бы не применить в коде? Сделано. Не тут-то было. Код отрабатывает, но чистит не все. Начинает вредничать после строки 30000. Не обрабатывается большой диапазон? Пробую искать и менять без помощи макроса.
Выяснилось, что ниже-дальше есть строки типа @top.jj.ru, попытка изменения которых вызывала ошибку ("неправильная функция" ;) . Лечение: первым делом заменить "@"
Может, есть другие пути? Вдруг "собачка" нужна в середине текста?
Sub t()
Dim a(), r As Object, i&
Set r = CreateObject("vbscript.regexp")
a = [a1].CurrentRegion.Columns(1).Value
With r
.Global = True
.ignorecase = True
.Pattern = "(www\.|http://|@)?([a-z.]*)/?.*"
For i = 1 To UBound(a)
If .test(a(i, 1)) Then a(i, 1) = .Execute(a(i, 1))(0).submatches(1)
Next
End With
[b1].Resize(UBound(a)).Value = a
End Sub
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
пс. более простой и заманчивый вариант шаблона .Pattern = ".*?([a-z.]*)/?.*" (ну и submatches(0), конечно) работает не всегда корректно. хотя, для реальной жизни шаблон всё равно надо доделывать. в частности, пропустил дефис, символ подчеркивания, цифры: