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

521
Matt

Есть ли способ извлечь несколько адресов электронной почты из файла Excel Cell / Excel

 | A | B  ----|------------- 1 |HTML | |Content| | 1 | ----|-------|----- 2 |HTML | |Content| | 2 | ----|-------|----- N Rows| | 

Более или менее содержание одинаково в столбцах

HTML-контент в первой колонке


cid=9498&peid= **xyz9000@gmail.com** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=  **navee@centra.com**&cid=9498 style="text-decoration: none; color: blue;">Subscribe</a> to receive requirements & resumes </font>  </p> </td> </tr>  <tr> <td colspan="2" valign="middle"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:15px" color="#3C3C3C" face="Verdana" > <br><u>From</u>:<br> Navee ,<br> Centra<br>  qwerty@centra.com<br> <span style="background-color: #FFFF00"><b>Reply to:</b></span> &nbsp;&nbsp;navee@centra.com<br><br>  </font>  </p> </td> </tr>   <tr> <td colspan="2" valign="middle"> <br><p><strong>Big  

HTML-контент в первой колонке


cid=9498&peid= **xyz9000@gmail.com** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=  **navee@centra.com**&cid=9498 

Я пытался использовать онлайн-инструменты, доступные в Интернете, но они бесполезны / они извлекают только первый доступный адрес электронной почты в поле Excel.

https://www.extendoffice.com/product/kutools-for-excel/excel-extract-email-address-from-string.html

Есть n количество строк.

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

Требуемый вывод - извлеките электронные письма и сохраните их в отдельной электронной таблице или в соседнем столбце

=========================


Формат ввода 3

#

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

 <p align="center" style="margin-left:0px;margin-top:30px; margin-right:0px;margin-bottom:25px;"> <table width="1024" cellspacing="0" cellpadding="0" border="0" > <tr> <td colspan="2" style="border-bottom: solid 1px #ff7373; " valign="bottom"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:12px" color="#3C3C3C" face="Verdana" > <a href=https://house.com/powerhouse/fe_web_member_unsubscription.php?cid=4870&teid=volcan9@gmail.com&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: red;">Remove/unsubscribe</a><font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https://house.com/powerhouse/fe_web_member_update.php?cid=4870&peid=volcan9@gmail.com&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https://house.com/powerhouse/fe_web_member_subscription_verify.php?oeid=mod.s@solutionsinc.com&cid=4870 style="text-decoration: none; color: blue;">Subscribe</a> to receive requirements </font>  </p> </td> </tr>  <tr> <td colspan="2" valign="middle"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:15px" color="#3C3C3C" face="Verdana" > <br><u>From</u>:<br> mod,<br> Solution<br>  mod.s@solutionsinc.com<br> <span style="background-color: #FFFF00"><b>Reply to:</b></span> &nbsp;&nbsp;mod.s@solutionsinc.com<br><br>  </font>  </p> </td> </tr>   <tr > <td width="800" valign="top" style="border-top: solid 1px #333399; "> <p align="justify" style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:12px" color="#666666" face="Verdana"> <a href="http://www.res.com/#!products/c5n6" style="text-decoration: none; color: red" title="Click to view more details">.</a> </font> </p> </td>  <td valign="top" style="border-top: solid 1px #333399; "> <p align="right" style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:10px" color="#3C3C3C" face="Verdana">  </font> </p> </td> </tr> </table><br> </p> 
0
Да, есть несколько способов сделать это. `kutools` должен работать для нескольких адресов электронной почты. Какие еще варианты вы пробовали и в чем проблема. Какой из различных тегов (`unix`,` vba`, `google-spreadsheets`,` excel`) вы хотите использовать? Какой вывод вы хотите? Ron Rosenfeld 6 лет назад 0
@RonRosenfeld Обязательный вывод - извлекать электронные письма и сохранять их в отдельной электронной таблице или в соседнем столбце. Я хотел бы использовать Excel VBA или какой из них легче Matt 6 лет назад 0

1 ответ на вопрос

1
Ron Rosenfeld

Эта пользовательская функция (UDF) будет возвращать массив существующих адресов электронной почты в указанной ячейке.

Затем отдельные адреса могут быть получены различными способами:

  • Используйте функцию INDEX
  • Введите функцию как массив из нескольких ячеек
  • Используйте его в макросе для выполнения специальных действий, которые могут вам потребоваться.

Символ адреса электронной почты определяется шаблоном регулярных выражений sPatи подробно описан ниже.

Вы помещаете UDF в обычный модуль

Option Explicit Function ExtrEmail(S As String) As String() Dim sTemp() As String Dim RE As Object, MC As Object, M As Object Const sPat As String = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]\b" 'Regex for emails Dim I As Long  'Initialize Regex engine Set RE = CreateObject("vbscript.regexp") With RE .Pattern = sPat .Global = True .ignorecase = True If .test(S) = True Then Set MC = .Execute(S) ReDim sTemp(1 To MC.Count) I = 0 For Each M In MC I = I + 1 sTemp(I) = M Next M End If End With ExtrEmail = sTemp End Function 

Один из способов его использования показан на скриншоте ниже (с помощью функции INDEX). Формула вводится B1и заполняется вправо и вниз. Предложение IFERRORзаставляет его возвращать пустую строку, если совпадений меньше, чем заполненных ячеек.

Изменить: изображение изменилось, чтобы показать все три примера

enter image description here

Regex Pattern Объяснение

Адрес электронной почты

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]\b 

Опции: без учета регистра; ^ $ не совпадают при переносе строки

Создано с помощью RegexBuddy

@ Matt Если это работает для вас, не могли бы вы отметить мой ответ как принятый? Пожалуйста, прочитайте [Что мне делать, когда кто-то отвечает на мой вопрос?] (Https://superuser.com/help/someone-answers) Ron Rosenfeld 6 лет назад 0
Я пробовал ваше решение для формата ввода 3. К сожалению, ваше решение не работает. Он извлекает только первое появление письма. Не все множественные электронные письма, присутствующие в ячейке, извлекаются. Не уверен, что проблема связана с входными данными или я выполняю их неправильно - = IFERROR (INDEX (ExtrEmail ($ A1), COLUMNS ($ A: A)), "") Matt 6 лет назад 0
@Matt Кажется, что здесь хорошо работает с только что добавленными вами входными данными формата 3. И ваша формула выглядит нормально, при условии, что ваши данные A1. Я выложу скриншот моих результатов со всей вашей информацией Ron Rosenfeld 6 лет назад 0