Note: The other languages of the website are Google-translated. Back to English

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

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

doc-extract-emails1 -2 doc-extract-emails2

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

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

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

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


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

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

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

doc-extract-emails3

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

doc-extract-emails4

Ноты:

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

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

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


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

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

doc извлечение писем-1

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


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

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

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, а адреса электронной почты были извлечены из выбранных текстовых строк. Смотрите скриншоты:

doc-extract-emails8 -2 doc-extract-emails9

Ноты:

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

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

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


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

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

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

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

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

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

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

doc-extract-emails9

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

doc-extract-emails9

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


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

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

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

Как извлечь домены из нескольких адресов электронной почты в 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% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (40)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
LUL ИСПОЛЬЗУЙТЕ ЭТОТ КОД ДЛЯ ИЗВЛЕЧЕНИЯ ПО ЭЛЕКТРОННОЙ ПОЧТЕ. Sub lula() Dim d1 As Variant cntr = 0 rowstring = ActiveCell.Offset(0, 0).Value d1 = Split(rowstring, " ") Do 'MsgBox d1(cntr) cntr = cntr + 1 If d1(cntr) = "" Then GoTo ttt If InStr(d1(cntr), "@") Then MsgBox d1(cntr) GoTo ttt End If Loop While d1(cntr) "" ttt: End Sub
Этот комментарий был сведен к минимуму модератором на сайте
очень полезно, спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за эту формулу! Вы только что избавили меня от уймы работы — мне пришлось извлечь 1500 электронных писем из плохо написанного листа Excel для маркетингового списка электронной почты. Как только я, наконец, нашел вашу формулу, это было несложно.
Этот комментарий был сведен к минимуму модератором на сайте
Отличный код! Действительно полезно. К сожалению, он объединяет несколько адресов электронной почты, а не разделяет их с пользой, например, с помощью точки с запятой. Как бы вы добавили разделитель?
Этот комментарий был сведен к минимуму модератором на сайте
нет VBA, просто формула для вставки в ячейку. Просто измените ссылки (в приведенном ниже примере рассматривается ячейка A1) = TRIM (RIGHT (SUBSTITUTE (LEFT (A1, FIND ("@", A1) - 1))," ", REPT ( " ",99)),99))&MID(A1,НАЙТИ("@",A1),НАЙТИ(" ",A1&" ",НАЙТИ("@",A1))-НАЙТИ("@",A1) )
Этот комментарий был сведен к минимуму модератором на сайте
[quote]... =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))Мной[/quote] Спасибо "ME", работает дословно в электронной таблице Google!
Этот комментарий был сведен к минимуму модератором на сайте
[quote] нет VBA, просто формула для вставки в ячейку. Просто измените ссылки (в приведенном ниже примере рассматривается ячейка A1) = TRIM (RIGHT (SUBSTITUTE (LEFT (A1, FIND ("@", A1) -1))," " ,REPT(" ",99)),99))&MID(A1,НАЙТИ("@",A1),НАЙТИ(" ",A1&" ",НАЙТИ("@",A1))-НАЙТИ("@" ,А1))Мной[/quote] Спасибо. Это сработало для меня.
Этот комментарий был сведен к минимуму модератором на сайте
Удивительно! С уважением к скрипту VBS! СПАСИБО!
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо большое, это очень удобно!
Этот комментарий был сведен к минимуму модератором на сайте
Это здорово, но теперь у меня есть проблема. Вместо точки между всеми адресами электронной почты (например, abcd@aol com) стоит пробел, поэтому формула не помещает конец всех адресов электронной почты (.net, .com и т. д.) в новый столбец. Как я могу это исправить?
Этот комментарий был сведен к минимуму модератором на сайте
Привет всем, я также искал способ отделить адреса электронной почты, чтобы я мог поместить это в Outlook. Я добавил разделитель ";" между адресами электронной почты, чтобы они не работали вместе. Дайте мне знать, что вы думаете. Спасибо автору оригинала за это! Функция ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA. InStr(Index, extractStr, "@") getStr = "" Если Index1 > 0, то For p = Index1 - от 1 до 1 Шаг -1 Если Mid(extractStr, p, 1) Аналогично CheckStr, то 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) Аналогично CheckStr Тогда getStr = getStr & Mid(extractStr, p, 1) Иначе getStr = getStr Выход для End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If Функция окончания цикла
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо автору оригинального сценария; Я пошел дальше и добавил разделитель «;» между несколькими адресами электронной почты. Функция ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA. InStr(Index, extractStr, "@") getStr = "" Если Index1 > 0, то For p = Index1 - от 1 до 1 Шаг -1 Если Mid(extractStr, p, 1) Аналогично CheckStr, то 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) Аналогично CheckStr Тогда getStr = getStr & Mid(extractStr, p, 1) Иначе getStr = getStr Выход для End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If Функция окончания цикла
Этот комментарий был сведен к минимуму модератором на сайте
Это хорошо! благодарю вас.
Этот комментарий был сведен к минимуму модератором на сайте
Брат, ты действительно гений. Формула ниже сработала для меня и сэкономила ручное вмешательство, которое раньше занимало часы = TRIM(RIGHT(SUBSTITUTE(LEFT(H2,FIND(" ",H2&" ",FIND("@",H2))-1)," ", REPT(" ",LEN(H2))),LEN(H2))) Благослови вас Бог
Этот комментарий был сведен к минимуму модератором на сайте
мне нужно больше информации, как извлечь электронные письма
Этот комментарий был сведен к минимуму модератором на сайте
Уважаемый сэр, Как я могу извлечь правильные идентификаторы электронной почты из моего примера списка адресов электронной почты ниже a.hamilton@tradsingapore.com.sg aarabest@emirates.com.net.ae admin@countrywide.com.my
Этот комментарий был сведен к минимуму модератором на сайте
так как формула очень помогла мне, я решил поделиться своим опытом. Я запускаю его со списком веб-страниц html, которые иногда настолько длинны, что формула выдает ошибку. Согласно википедии, максимальная длина адреса электронной почты составляет 254 символа, поэтому замена частей len(A1) на 256 повышает стабильность функции: НАЙТИ("@",A1))-1)," ", ПОВТОР(" ",1)),1))
Этот комментарий был сведен к минимуму модератором на сайте
Отлично, замечательно. каждый должен использовать..
Этот комментарий был сведен к минимуму модератором на сайте
Если я хочу извлечь только один адрес электронной почты из A1, эта формула делает это и сообщает только пустое значение, а не ошибку, если A1 не содержит адреса электронной почты. Я считаю, что это более простое решение, чем пытаться освоить все эти скрипты, и оно ничего не стоит. =ЕСЛИОШИБКА(ОТРЕЗАТЬ(ПРАВО(ПОДСТАВИТЬ(ЛЕВАЯ(A1,НАЙТИ(" ",A1&" ",НАЙТИ("@",A1))-1)," ",ПОВТОР(" ",ДЛСТР(A1))), ДЛСТР(A1))),"")
Этот комментарий был сведен к минимуму модератором на сайте
Чрезвычайно полезно. Большое спасибо!!
Этот комментарий был сведен к минимуму модератором на сайте
Офигенная информация! Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Я использую Excel 2007 на HP. Если у вас есть Melanie Brown в A1 и вы хотите, чтобы в той же ячейке было написано Melanie.Brown@gmail.com, как вы это сделаете? У меня есть ряд грив, чтобы сделать то же самое. Кто-нибудь поможет мне с этим?
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL