Страницы: 1
RSS
Символ "@" (собачка) при НАЙТИ/ЗАМЕНИТЬ
 
Может, кому пригодится.

Писал код для сравнения и выбора из URL (диапазон двух столбцов, строк около 70000) уникальных адресов.
www.tif.ru/index.kkk
avon.sb.ru/auto_hlhg
@top.jj.ru
http://alism.polo.ru/press1.html


Из такого разношерстного набора выбрать только уникальные tif.ru, sb.ru, top.jj.ru, alism.polo.ru, обрезав лишнее.
НАЙТИ/ЗАМЕНИТЬ - почему бы не применить в коде? Сделано.
Не тут-то было. Код отрабатывает, но чистит не все. Начинает вредничать после строки 30000. Не обрабатывается большой диапазон? Пробую искать и менять без помощи макроса.

Выяснилось, что ниже-дальше есть строки типа @top.jj.ru, попытка изменения которых вызывала ошибку ("неправильная функция"  ;)  .
Лечение: первым делом заменить "@"

Может, есть другие пути? Вдруг "собачка" нужна в середине текста?
 
Цитата
Может, есть другие пути?
regexp

примерно так:
Код
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), конечно) работает не всегда корректно.
хотя, для реальной жизни шаблон всё равно надо доделывать.
в частности, пропустил дефис, символ подчеркивания, цифры:
Код
.Pattern = "(www\.|http://|@)?([-_a-z0-9.]*)/?.*"


просто нет у меня под рукой списка урлов-мейлов.
Изменено: ikki - 29.08.2013 10:06:12
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Спасибо. На заметку.

Как оказалось позже, строки с "@" в список попали случайно! Не должно их там быть. А я код подпиливаю :)
Страницы: 1
Читают тему
Наверх