Страницы: 1
RSS
Извлечение номеров телефонов из xls файла
 
За пару лет работы собралось несколько больших  xls файлов. В каждом из них несколько листов. На листах  среди текста в первом столбце есть номера телефонов записанные по одинаковому шаблону "ТЕКСТ (ххх)ххх-хх-хх  ТЕКСТ".
Нужно их вытянуть в виде списка или в текстовый файл или на отдельный лист экселя.
Поковырял макросы из подобных тем, так и не смог под свои задачи адаптировать :).
Хэлп плииииз!

p.s. Образец одного листика прикрепил
 
Вам только номера телефонов нужны? Без персоналий?
Кому решение нужно - тот пример и рисует.
 
Да, нужно только создать базу телефонов  
 
=ЕСЛИОШИБКА(ПСТР(A15;НАЙТИ("(";A15);99);P14) в P15 и протянуть вниз, если не нужно дублирование номера, то P14 заменить на ""
Изменено: Ivan.kh - 22.07.2019 18:03:29
 
в ячейку А15:
< =ПСТР(A15;НАЙТИ("(";A15);14) >
 
пишет в этой ячейке такой результат
#ИМЯ?
 
Настя_Nastya , в А15 не могу написать - там текст же который надо обрабатывать, написал тоже в Р15, протянул вниз результат такого типа
(067)123-34-56
#ЗНАЧ!
#ЗНАЧ!
#ЗНАЧ!
#ЗНАЧ!
#ЗНАЧ!
(050)965-77-50
#ЗНАЧ!
...
, а как с мусором быть?
И я так понимаю еще загвоздка в том что если в тексте будет встречаться открытие  скобки, то оттуда тоже будет браться 14 символов. Хотелось бы именно соблюдения шаблона (ххх)ххх-хх-хх
Изменено: prsserg - 22.07.2019 19:11:51
 
Если ячейки с номерами всегда в таком формате, то см. вариант.
Обрабатываются листы с первого по предпоследний.  
 
Спасибо, работает, но не на всех листах - некоторые чемто не нравятся, выдает ошибку.
А можно его модифицировать чтоб он  в таком виде лист обрабатывал, к которому я могу все листы привести, вот такой вот:
 
Никакой ошибки нет: изначально данные на листах начинались со строки №15, а в последнем файле с первой строки - есть разница? Поменяйте в макросе номер строки, с которой цикл начинает перебор.
И ещё один момент: сейчас отталкиваемся от первой скобки, что может привести к ошибке. Поменяйте маску на такую:
like "*(###)###-##-##*"
 
Хоть убейте не могу понять обо что спотыкается :) Вот такой кусочек листа ему подсовываю, ругается Run-time error (9)
Ну и поменять маску это совсем круто - строку 15 на 1 поменял .
Вернее вижу что там в скрытом есть текст со скобочками)
p.s. маску вписал, но на этом листе все равно спотыкается
Изменено: prsserg - 22.07.2019 20:05:22
 
А чего тут понимать? - не во всех строках с номером имеется имеется Фамилия, Имя, Отчество. Посмотрите строку 71 на первом листе. Ну и ниже тоже есть - строка 274. Макрос отсчитывает три пробела и берёт оставшееся значение. Или приведите все данные к единому формату или нужно менять алгоритм.
 
теперь понял. к единому формату не получится -  нужно чтоб оно именно на маску ориентировалось, ну хотя бы на скобочки вокруг кода оператора (ххх)...
 
Вот вариант с новой маской и другим алгоритмом.
 
Премного благодарен!! Все работает! Если объясните 2 слова по какому принципу теперь алгоритм определяет то еще и буду понимать что происходит :)
 
Сейчас оставляем всё, что после первой открывающей скобки и эту скобку добавляем в начало текста. А раньше забирали всё, что после третьего пробела.
Ну и маска поменялась под телефонный стандарт.
 
Еще раз спасибо.  
Страницы: 1
Наверх