Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel выбрать из текста email, по регулярке, или формуле выбрать email  
:(
    Опции темы
Prontit
  Дата 2.4.2013, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Добрый день!

Такое дело, есть таблица в Екселе, там колонка "Контакты". Там в произвольной форме написаны контакты клиента, что-то вроде "50-800-65, [email protected]", email может быть в любой части текста. Задача такая, по регульному выражению и/или по формуле вытащить емэйлы в отдельную колонку.

Есть ли какие-то формулы, или только VBA?


Заранее благодарю!
PM MAIL ICQ Skype   Вверх
Akina
Дата 2.4.2013, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Разбить по разделителям, просеять по наличию одного символа "@" за пределами литералов в кавычках. А дальше - проверять глазом. Потому как много народу поломало зубы на создании таких регулярок, и окончательного решения со 100% результатом, похоже, пока нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Prontit
Дата 2.4.2013, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



 smile открыть VS или тот же Delphi, подгрузить Excel файл, циклом пройтись по столбцу и выцепить email регуляркой. Неужели по другому никак, и нет в Excel'e похожих функций...

Это сообщение отредактировал(а) Prontit - 2.4.2013, 11:39
PM MAIL ICQ Skype   Вверх
Akina
Дата 2.4.2013, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Prontit, ты RFC по мылам читал? там такое, что ни одна регулярка не поймает всё. Да, 95% поймает, а то и 99%... но не 100%.

Добавлено через 26 секунд
В Экселе готовых функций - нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 2.4.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



А почему нельзя через VBA выбрать слова, содержащие @ ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Prontit
Дата 2.4.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Цитата(Данкинг @ 2.4.2013,  14:05)
А почему нельзя через VBA выбрать слова, содержащие @ ?

можно) совсем не знаком с VBA, подскажите?
PM MAIL ICQ Skype   Вверх
Hugo121
Дата 2.4.2013, 18:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.5.2010

Репутация: 1
Всего: 2



UDF - код в модуль, выбрать в мастере в определённых пользователем.

Код

Function email(S As String)
    Dim v
    Dim EML_PTRN$
    EML_PTRN = "[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}"

    With CreateObject("vbscript.regexp")
        .Pattern = EML_PTRN
        .Global = True
        .IgnoreCase = True
        Set v = .Execute(S)
    End With
    email = v(0).Value
End Function

PM MAIL   Вверх
Poseidon
Дата 5.4.2013, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 1
Всего: 133



Цитата(Akina @  2.4.2013,  13:58 Найти цитируемый пост)
Prontit, ты RFC по мылам читал? там такое, что ни одна регулярка не поймает всё. Да, 95% поймает, а то и 99%... но не 100%.
Приведи пример реального мыла, которое не поймается регуляркой 
Код

[_a-zA-Z\d\-\.]+@([_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+)



Это сообщение отредактировал(а) Poseidon - 5.4.2013, 16:55


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Работа с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Работа с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0748 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.