Как в excel выделить все электронные адреса

Если вам часто приходится собирать адрес электронной почты клиента или вы читаете его из списка Excel, вам необходимо перейти к фильтрации и разделению, чтобы получить только адрес электронной почты в списке. Адреса электронной почты будут включать сообщение, комментарий или любую другую информацию вверху и внизу адреса электронной почты. Копирование каждого адреса электронной почты вручную займет очень много времени, если список очень длинный. Итак, как отфильтровать электронную почту из информации, содержащейся в Excel?

  1. Инструкции по разделению содержимого столбцов в Excel
  2. 2 способа разделения информации Имя в Microsoft Excel?
  3. Как разделить столбцы даты, месяца и года на 3 разных столбца в Excel

Например, у нас есть пример таблицы данных ниже со списком адресов электронной почты, который необходимо отделить, отфильтровать от сопутствующего содержимого. Электронная почта смешивается с содержимым на оборотной и передней сторонах.

Изображение 1: Как отделить электронную почту от информации в Excel

Шаг 1:

Во-первых, пользователи затемняют все содержимое этого списка. Продолжайте нажимать инструмент «Найти и выделить» и выберите «Заменить». или вы можете быстро нажать Ctrl + H, чтобы быстро открыть.

Изображение 2: Как отделить электронную почту от информации в Excel

Шаг 2:

Откройте интерфейс поиска и замены, щелкните вкладку «Заменить». Затем в разделе «Найти» введите расширение электронной почты .com *. Символ * будет представлять весь контент, отображаемый за доменом .com. Может быть применен к .net или любому расширению электронной почты по вашему желанию.

Затем в поле «Заменить на» введите .com. Нажмите «Заменить все», чтобы удалить символы в конце электронного письма.

Изображение 3: Как отделить электронную почту от информации в Excel

Шаг 3:

Затем Excel сообщит количество символов для поиска в соответствии с заданным пользователем содержимым поиска, нажмите OK, чтобы согласиться.

Изображение 4: Как отделить электронную почту от информации в Excel

В результате список рассылки удалит лишнее содержимое за адресом электронной почты.

Изображение 5: Как отделить электронную почту от информации в Excel

Шаг 4:

Затем снова откройте интерфейс поиска и замены. В поле «Найти, что вводить *» компонент «Заменить» ничего не вводит. Щелкните Заменить все.

Изображение 6: Как отделить электронную почту от информации в Excel

Мы также получаем уведомление о количестве найденных символов, вместо этого нажмите ОК.

Изображение 7: Как отделить электронную почту от информации в Excel

Окончательный результат — вся верхняя часть электронного письма была удалена, включая пробелы. Список адресов электронной почты в Excel был значительно упрощен.

Изображение 8: Как отделить электронную почту от информации в Excel

Вместо того, чтобы вручную фильтровать электронные письма, инструмент Excel «Найти и заменить» перенес все данные в списке на адреса электронной почты. Первое и последнее содержимое письма удаляются, включая пробелы.

Видеоурок по фильтрации адресов электронной почты в Excel

Узнать больше:

  1. Как преобразовать последовательность чисел в даты в Excel
  2. Как посчитать количество дней в Excel
  3. Как разделить тысячи запятыми в Excel

Желаю всем успехов!

Как быстро извлечь адрес электронной почты из текстовой строки?

Когда вы импортируете некоторые адреса электронной почты из веб-сайта в рабочий лист Excel, они всегда содержат нерелевантный текст, но теперь вы просто хотите извлечь чистые адреса электронной почты из текстовой строки (см. Следующие снимки экрана). Как можно быстро получить адреса электронной почты только из текста ячейки?


стрелка синий правый пузырь Извлечь адрес электронной почты из текстовой строки с помощью формулы

Здесь я представляю вам длинную формулу для извлечения только адресов электронной почты из текста в Excel. Пожалуйста, сделайте следующее:

1. В соседней ячейке B1 введите эту формулу = ОБРЕЗАТЬ (ВПРАВО (ПОДСТАВИТЬ (ЛЕВО (A1, НАЙТИ («», A1 & «», НАЙТИ («@», A1)) — 1), «», ПОВТОР («», LEN (A1))), LEN ( А1))).

doc-extract-emails3

2, Затем нажмите Enter , затем выберите ячейку B1 и перетащите маркер заполнения в диапазон, который вы хотите содержать эту формулу. И адреса электронной почты в диапазоне были извлечены из текстовой строки. Смотрите скриншот:

doc-extract-emails4

Ноты:

1. Знаки препинания после адреса электронной почты также будут извлечены.

2. Если ячейки не содержат адресов электронной почты, в формуле будут отображаться значения ошибок.

3. Если в ячейке несколько адресов электронной почты, формула извлечет только первый адрес.



стрелка синий правый пузырь Извлечь адрес электронной почты из текстовой строки с помощью функции, определяемой пользователем

За исключением приведенной выше формулы, функция, определяемая пользователем, также может помочь вам получить адрес электронной почты из текстовой строки.

1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.

Function ExtractEmailFun(extractStr As String) As String
'Update by extendoffice
Dim CharList As String
On Error Resume Next
CheckStr = "[A-Za-z0-9._-]"
OutStr = ""
Index = 1
Do While True
    Index1 = VBA.InStr(Index, extractStr, "@")
    getStr = ""
    If Index1 > 0 Then
        For p = Index1 - 1 To 1 Step -1
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = Mid(extractStr, p, 1) & getStr
            Else
                Exit For
            End If
        Next
        getStr = getStr & "@"
        For p = Index1 + 1 To Len(extractStr)
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = getStr & Mid(extractStr, p, 1)
            Else
                Exit For
            End If
        Next
        Index = Index1 + 1
        If OutStr = "" Then
            OutStr = getStr
        Else
            OutStr = OutStr & Chr(10) & getStr
        End If
    Else
        Exit Do
    End If
Loop
ExtractEmailFun = OutStr
End Function

3. Затем сохраните код и введите формулу = ExtractEmailFun (A1) в соседней пустой ячейке, см. снимок экрана:

doc-extract-emails5

4, Затем нажмите Enter , выберите ячейку B1 и перетащите маркер заполнения в диапазон, в котором вам нужна формула. И все адреса электронной почты были извлечены из текста ячейки. Смотрите скриншот:

doc-extract-emails6

Ноты:

1. Если в ячейках нет адресов электронной почты, будут показаны пустые ячейки.

2. Если в ячейке несколько адресов электронной почты, все электронные письма будут извлечены.


стрелка синий правый пузырь Извлечь адрес электронной почты из текстовой строки с кодом VBA

Если вы считаете, что приведенные выше формулы вызывают у вас проблемы, следующий код VBA может помочь вам извлечь адреса электронной почты за один раз.

1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, и вставьте следующий макрос в Окно модуля.

VBA: извлечь адреса электронной почты из текстовой строки

Sub ExtractEmail()
'Update 20130829
Dim WorkRng As Range
Dim arr As Variant
Dim CharList As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
arr = WorkRng.Value
CheckStr = "[A-Za-z0-9._-]"
For i = 1 To UBound(arr, 1)
    For j = 1 To UBound(arr, 2)
        extractStr = arr(i, j)
        outStr = ""
        Index = 1
        Do While True
            Index1 = VBA.InStr(Index, extractStr, "@")
            getStr = ""
            If Index1 > 0 Then
                For p = Index1 - 1 To 1 Step -1
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = Mid(extractStr, p, 1) & getStr
                    Else
                        Exit For
                    End If
                Next
                getStr = getStr & "@"
                For p = Index1 + 1 To Len(extractStr)
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = getStr & Mid(extractStr, p, 1)
                    Else
                        Exit For
                    End If
                Next
                Index = Index1 + 1
                If outStr = "" Then
                    outStr = getStr
                Else
                    outStr = outStr & Chr(10) & getStr
                End If
            Else
                Exit Do
            End If
        Loop
        arr(i, j) = outStr
    Next
Next
WorkRng.Value = arr
End Sub

3. Затем нажмите F5 ключ для запуска этого кода, и вы должны выбрать диапазон, который вы хотите использовать VBA в появившемся диалоговом окне, см. снимок экрана:

doc-extract-emails7

4. Затем нажмите OK, а адреса электронной почты были извлечены из выбранных текстовых строк. Смотрите скриншоты:

Ноты:

1. Если в ячейках нет адресов электронной почты, отобразятся пустые ячейки.

2. Все электронные письма будут извлечены, если в ячейке более одного адреса электронной почты.

3. Извлеченные электронные письма будут охватывать исходные данные, поэтому при необходимости лучше сначала сделать резервную копию данных.


стрелка синий правый пузырь Извлечь адрес электронной почты из текстовой строки с помощью Kutools for Excel одним кликом

Вышеупомянутые методы выглядят несколько сложными для нашего новичка в Excel, здесь я могу порекомендовать вам быстрый и простой инструмент — Kutools for Excel, С его Извлечь адрес электронной почты Утилита, вы можете без особых усилий извлечь адреса электронной почты из текстовых строк.

Если вы установили Kutools for Excel, пожалуйста, сделайте следующее:

1. Выделите ячейки, содержащие текстовые строки.

2. Нажмите Кутулс > Текст > Извлечь адрес электронной почты, см. снимок экрана:

3, И Извлечь адрес электронной почты появится диалоговое окно, выберите ячейку, в которую вы хотите поместить результат, см. снимок экрана:

doc-extract-emails9

4. Затем нажмите OK , все адреса электронной почты были извлечены из текстовых строк, см. снимок экрана:

doc-extract-emails9

Нажмите, чтобы загрузить и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


стрелка синий правый пузырь Демонстрация: извлечение адреса электронной почты из текстовой строки с помощью Kutools for Excel


Связанная статья:

Как извлечь домены из нескольких адресов электронной почты в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Когда вы импортируете некоторые адреса электронной почты из веб-сайта в рабочий лист Excel, они всегда содержат нерелевантный текст, но теперь вы просто хотите извлечь чистые адреса электронной почты из текстовой строки (см. следующие снимки экрана). Как можно быстро получить адреса электронной почты только из текста ячейки?

Извлечь адрес электронной почты из текстовой строки с помощью формулы

Извлечь адрес электронной почты из текстовой строки с помощью функции, определяемой пользователем

Извлечь адрес электронной почты из текстовой строки с помощью VBA код

Извлечь адрес электронной почты из текстовой строки с помощью Kutools for Excel


Содержание

  1. Извлечь письмо адрес из текстовой строки с формулой
  2. Извлечь письмо адрес из текстовой строки с помощью функции, определяемой пользователем
  3. Извлечь адрес электронной почты из текстовой строки с кодом VBA
  4. Извлечь адрес электронной почты из текстовой строки с помощью Kutools for Excel одним щелчком мыши
  5. Демо: извлечение адреса электронной почты из текстовая строка с помощью Kutools for Excel

Извлечь письмо адрес из текстовой строки с формулой

Здесь я представляю вам длинную формулу для извлечения только адресов электронной почты из текста в Excel. Пожалуйста, сделайте следующее:

1 . В соседней ячейке B1 введите эту формулу = TRIM (RIGHT (SUBSTITUTE (LEFT (A1, FIND (“”, A1 & “”, FIND (“@”, A1)) – 1), “”, REPT (“”, LEN (A1))), LEN (A1))) .

2 . Затем нажмите клавишу Enter , затем выберите ячейку B1 и перетащите маркер заполнения в диапазон, который вы хотите содержать эту формулу. И адреса электронной почты в диапазоне были извлечены из текстовой строки. См. Снимок экрана:

Примечания:

1. Знаки препинания после адреса электронной почты также будут извлечены.

2. Если в ячейках нет адресов электронной почты, в формуле будут отображаться значения ошибок.

3. Если в ячейке несколько адресов электронной почты, формула будет извлекать только первый адрес.


Извлечь несколько адресов электронной почты из текстовых строк.

Kutools for Excel ‘s Извлечь адрес электронной почты может помочь вам быстро и удобно извлекать адреса электронной почты из текстовых строк. Нажмите, чтобы загрузить Kutools for Excel!

: с более чем 300 удобными надстройками Excel, попробуйте бесплатно без ограничений через 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!


Извлечь письмо адрес из текстовой строки с помощью функции, определяемой пользователем

За исключением приведенной выше формулы, функция, определяемая пользователем, также может помочь вам получить адрес электронной почты из текстовой строки.

1 . Удерживая нажатыми клавиши ALT + F11 , откроется окно Microsoft Visual Basic для приложений .

2 . Нажмите Вставить > Module и вставьте следующий макрос в окно модуля.

3 . Затем сохраните код и введите формулу = ExtractEmailFun (A1) в соседнюю пустую ячейку, см. Снимок экрана:

4 . Затем нажмите клавишу Enter , выберите ячейку B1 и перетащите маркер заполнения в диапазон, в котором вам нужна формула. И все адреса электронной почты были извлечены из текста ячейки. См. Снимок экрана:

Примечания:

1. Если в ячейках нет адресов электронной почты, будут отображаться пустые ячейки.

2. Если в ячейке несколько адресов электронной почты, все электронные письма будут извлечены.


Извлечь адрес электронной почты из текстовой строки с кодом VBA

Если вы чувствуете, что приведенные выше формулы доставляют вам неудобства, следующий код VBA может помочь вам извлечь адреса электронной почты в один.

1 . Удерживая нажатыми клавиши ALT + F11 , откроется окно Microsoft Visual Basic для приложений .

2 . Нажмите Вставить > Module и вставьте следующий макрос в окно модуля .

VBA: извлекать адреса электронной почты из текстовой строки

3 . Затем нажмите клавишу F5 , чтобы запустить этот код, и вы должны выбрать диапазон, который вы хотите использовать VBA в появившемся диалоговом окне, см. Снимок экрана:

4 . Затем нажмите OK , и адреса электронной почты будут извлечены из выбранных текстовых строк. См. Скриншоты:

1 . Если в ячейках нет адресов электронной почты, будут отображаться пустые ячейки.

2. Все электронные письма будут извлечены, если в ячейке более одного адреса электронной почты.

3. Извлеченные электронные письма будут охватывать исходные данные, поэтому при необходимости лучше сначала сделать резервную копию данных.


Извлечь адрес электронной почты из текстовой строки с помощью Kutools for Excel одним щелчком мыши

Вышеупомянутые методы выглядят несколько сложными для нашего новичка в Excel, здесь я могу порекомендовать это быстрый и простой инструмент – Kutools for Excel , с его утилитой Извлечь адрес электронной почты , вы можете без особых усилий извлекать адреса электронной почты из текстовых строк.

Kutools for Excel : с более чем 300 удобными надстройками Excel ins, попробуйте бесплатно без ограничений в течение 30 дней .

Перейти к загрузке
Бесплатная пробная версия 30 daysPurchase
PayPal/MyCommerce

Если вы установили Kutools for Excel , сделайте следующее:

1 . Выберите ячейки, содержащие текстовые строки.

2 . Нажмите Kutools > Text > Извлечь адрес электронной почты . , см. снимок экрана:

3 . Появится диалоговое окно Извлечь адрес электронной почты , выберите ячейку, в которую вы хотите поместить результат, см. Снимок экрана:

. Затем нажмите кнопку OK , все адреса электронной почты были извлечены из текстовых строк, см. Снимок экрана:

Нажмите, чтобы загрузить и бесплатную пробную версию Kutools for Excel прямо сейчас!


Демо: извлечение адреса электронной почты из текстовая строка с помощью Kutools for Excel

Kutools for Excel : с более чем 300 удобные надстройки Excel, которые можно попробовать бесплатно без ограничений в течение 30 дней. Загрузить и бесплатную пробную версию прямо сейчас!


Как извлечь домены из нескольких адресов электронной почты в Excel?


 

Riplon

Пользователь

Сообщений: 3
Регистрация: 30.07.2015

Есть текст такого вида:
«ООО 7-Я  

PERSONAL-7YA@MAIL.RU

»
или  
«ООО АВТОМАГ РЕСПУБЛИКАНСКАЯ 3 КОРП.5  

AVTO_MAG.YAR@MAIL.RU

«

Как вырезать электронную почту и вставить в соседнюю ячейку (справа например)?

 

Ёк-Мок

Пользователь

Сообщений: 1775
Регистрация: 16.01.2013

вариант (100 скрытых столбцов для 100 символов исходного текста)

Прикрепленные файлы

  • вот.xls (21 КБ)

Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#3

30.07.2015 15:27:08

без примера не знаю будет работать на различных текстах или нет допиливайте сами

Код
=ПСТР(A1;ПОИСК("/";ПОДСТАВИТЬ(A1;" ";"/";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))+1;100)

Лень двигатель прогресса, доказано!!!

 

Catboyun

Пользователь

Сообщений: 1631
Регистрация: 09.05.2015

#4

30.07.2015 15:33:01

=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(A2;» «;ПОВТОР(» «;400));400))
или
=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(» «&ЛЕВБ(A2;ПОИСК(«@»;A2)-1);» «;ПОВТОР(» «;400));400)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;ПОИСК(«@»;A2);400)&» «;» «;ПОВТОР(» «;400));400))

Цитата
Сергей написал:или нет

аналогично

Изменено: Catboyun30.07.2015 15:40:26

 

Игорь

Пользователь

Сообщений: 3631
Регистрация: 23.12.2012

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

#6

30.07.2015 19:09:25

Кто подскажет, почему

Код
x = UBound(Split("ООО 7-Я PERSONAL-7YA@MAIL.RU"))

не видит второго (перед PERSONAL) пробела?

 

Игорь

Пользователь

Сообщений: 3631
Регистрация: 23.12.2012

пробелы бывают разные
первый — обычный, chr(32)
второй — необычный (часто в 1С применяется), chr(160)

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

Про 160 (неразрывный пробел) я в курсе, но чтобы он в такой строке оказался — даже и не подозревал ))

 

Hugo

Пользователь

Сообщений: 23252
Регистрация: 22.12.2012

Вот опять — «вырезать и вставить». Это в принципе не может сделать ни одна формула, только макросом. Ну как вариант — две формулы в два доп.столбца…
А тем по копированию e-mail было навалом, и UDF есть как минимум парочка.

 

Riplon

Пользователь

Сообщений: 3
Регистрация: 30.07.2015

Не получается применить. Вот исходная база

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

что не получается ваших попыток даже не видно

Лень двигатель прогресса, доказано!!!

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

Вариант, однако… ;)

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Riplon

Пользователь

Сообщений: 3
Регистрация: 30.07.2015

Хм. У меня почему-то пишет просто формулу, как в примере — не рассчитывает результат (на принтскрине ниже видно). Хотя в ваших файлах все считает.

А откуда взять «Extract hiperlinks»?

И еще — как сделать, чтобы в ячейке, откуда мы берем почту — ее не копировать, а вырезать, чтобы ее там не оставалось? Или создавать рядом новую ячейку, в которой не будет электронной почты

Изменено: Riplon03.08.2015 16:56:29

 

Hugo

Пользователь

Сообщений: 23252
Регистрация: 22.12.2012

Так это тот редкий случай, когда и впрямь нужно вырезать :)
Я уже выше написал как. Дополню — если делать всё формулами, то заменяйте в исходной строке вытянутый емайл на пусто, ну и ещё поверх всему TRIM() не помешает.

 

Z

Пользователь

Сообщений: 6111
Регистрация: 21.12.2012

Win 10, MSO 2013 SP1

#15

03.08.2015 17:12:19

Цитата
Riplon написал: …И еще — как сделать…

Вам выдали немало вариантов, но вы САМИ пока ничего не предприняли, так может стоит вам просто заказать решение в «РАБОТЕ»?
ps И разберитесь со своими «непонятнокакими многострочными» данными — их стоит, имхо, тщательно причесать перед употреблением… ;)

«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Hugo

Пользователь

Сообщений: 23252
Регистрация: 22.12.2012

Да, тут же выше всё уже есть.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#17

03.08.2015 17:42:41

Цитата
создавать рядом новую ячейку, в которой не будет электронной почты

UDF

Код
Function BezEmail(iCell As String)
  With CreateObject("vbscript.regexp")
   .Pattern = "[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}"
   .Global = True
   .IgnoreCase = True
  If .test(iCell) Then
    BezEmail = .Replace(iCell, "")
  Else
    BezEmail = iCell
  End If
 End With
End Function

 

МВТ

Пользователь

Сообщений: 1198
Регистрация: 01.02.2015

#18

03.08.2015 20:05:17

У меня без регулярных выражений, попроще :)

Код
Function GetMail(From As String)
Dim arr
arr = Split(Application.WorksheetFunction.Trim(Replace(From, Chr(160), Chr(32))))
For Each a In arr
    If InStr(a, "@") <> 0 Then
        GetMail = a
        Exit Function
    End If
Next a
End Function

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

как человек в VBA плавающий выкладываю решение Kuzmich,  тама нет почты и МВТ, тама есть почта

Лень двигатель прогресса, доказано!!!

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#20

03.08.2015 21:05:16

Цитата
тама нет почты

Вот почта

Код
Function Email(iCell As String)
    With CreateObject("vbscript.regexp")
        .Pattern = "[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}"
        .Global = True
        .IgnoreCase = True
        If .test(iCell) Then
          Email = .Execute(iCell)(0).Value
        Else
          Email = "Нет в строке электронного адреса"
        End If
    End With
End Function

Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.

В прикреплённом файле, на первом листе («исходные данные»), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации)

Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные адреса email в таблицу на втором листе («результат»)

Конечно, не помешало бы ещё проверить все найденные адреса почты на корректность (на соответствие стандартам RFC 5322 и RFC 5321), но в данном макросе это не реализовано (но обычно это и не требуется)

Для поиска адресов email используются регулярные выражения (RegExp)

Также рекомендуем обратить внимание на настройку для программы Парсер сайтов Сбор email на интернет-сайтах. Настройка позволяет проходить по списку сайтов и искать е-мейл на основной странице и странице контактов.

Есть в наличии также другая версия этого макроса, который выводит найденные адреса email в те же строки листа, где они были найдены:

Если вам нужна именно такая версия макроса, оплачивайте 450 руб, и напишите на почту order@excelvba.ru письмо с темой «Покупка макрос поиска email» с указанием, когда и куда оплатили.
После получения оплаты, я вышлю вам на почту файл с макросом.

Dim coll As Collection
 
Sub EmailsList()
    Dim cell As Range: Application.ScreenUpdating = False
    Set coll = New Collection
    ' перебираем все заполненные ячейки на листе в поисках адресов почты
    For Each cell In shs.UsedRange.SpecialCells(xlCellTypeConstants).Cells
        ParseAddresses cell.Text    ' проверяем очередную ячейку
    Next cell
 
    ' выводим найденные номера на второй лист
    For Each Item In coll
        shres.Range("a" & shres.Rows.Count).End(xlUp).Offset(1) = Item
    Next
End Sub
 
Sub cl(): shres.[a4:a65000].ClearContents: End Sub    ' очистка таблицы

Sub ParseAddresses(ByVal txt As String)
    ' ищет в тексте txt адреса электронной почты,
    ' все найденные адреса добавляются в коллекцию coll
    repl1$ = "ZZZXXXZZZ": repl2$ = "ZZZYYYZZZ": On Error Resume Next
    txt = Replace(txt, ".", repl1$): txt = Replace(txt, "-", repl2$)
    Set RegExp = CreateObject("VBScript.RegExp"): RegExp.Global = True
    RegExp.Pattern = "[w]{1,}@[w]{1,}" & repl1$ & "[w]{1,}"
    If RegExp.test(txt) Then
        Set objMatches = RegExp.Execute(txt)
        For i = 0 To objMatches.Count - 1
            addr = objMatches.Item(i).Value
            addr = Replace(addr, repl1$, "."): addr = Replace(addr, repl2$, "-")
            coll.Add addr, addr    ' только уникальные адреса
        Next
    End If
End Sub
  • 66077 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Понравилась статья? Поделить с друзьями:
  • Как в excel вывести сумму выделенных ячеек
  • Как в excel выделить все что ниже
  • Как в excel выделить повторяющиеся значения в ячейках
  • Как в excel вывести сумму в ячейку
  • Как в excel выделить все строчки через одну