有没有办法从 excel 单元格/excel 文件中提取多个电子邮件地址
| A | B
----|-------------
1 |HTML |
|Content|
| 1 |
----|-------|-----
2 |HTML |
|Content|
| 2 |
----|-------|-----
N Rows| |
各列内容大致相同
第一行第一列的 HTML 内容
cid=9498&peid= **[email protected]** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000"> | <font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=
**[email protected]**&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>
[email protected]<br>
<span style="background-color: #FFFF00"><b>Reply to:</b></span> [email protected]<br><br>
</font>
</p>
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
<br><p><strong>Big
第一列第二行的 HTML 内容
cid=9498&peid= **[email protected]** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000"> | <font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=
**[email protected]**&cid=9498
我尝试使用互联网上提供的在线工具,但它们毫无用处/它们仅提取 Excel 字段中第一个可用的电子邮件地址。
https://www.extendoffice.com/product/kutools-for-excel/excel-extract-email-address-from-string.html
共有 n 行。
有没有办法从 Excel 单元格中提取多个电子邮件地址
所需输出 - 提取电子邮件并将其保存在单独的电子表格或相邻的列中
=========================
输入格式 3
#对于 Excel 单元格中存在的以下 HTML 代码,我只能提取收到的电子邮件的第一次出现,但不能提取提到的所有多个电子邮件地址。
<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&[email protected]&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: red;">Remove/unsubscribe</a><font style="font-size:14px" face="Verdana" color="#000000"> | <font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https://house.com/powerhouse/fe_web_member_update.php?cid=4870&[email protected]&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000"> | <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>
[email protected]<br>
<span style="background-color: #FFFF00"><b>Reply to:</b></span> [email protected]<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>
答案1
此用户定义函数 (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]{2,}\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
如果匹配项少于填充的单元格数,则该子句会使其返回空字符串。
编辑: 图片已更改以显示所有三个示例
正则表达式模式解释
电子邮件地址
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b
选项:不区分大小写;^$ 不匹配换行符
- 断言字边界处的位置
\b
- 匹配下面列表中的单个字符
[A-Z0-9._%+-]+
- 一次至无限次之间,尽可能多次,根据需要回馈(贪婪)
+
- 介于“A”和“Z”之间的字符
A-Z
- “0” 至 “9” 范围内的字符
0-9
- 列表“._%+”中的单个字符
._%+
- 文字字符“-”
-
- 一次至无限次之间,尽可能多次,根据需要回馈(贪婪)
- 逐字匹配字符“@”
@
- 匹配下面列表中的单个字符
[A-Z0-9.-]+
- 一次至无限次之间,尽可能多次,根据需要回馈(贪婪)
+
- 介于“A”和“Z”之间的字符
A-Z
- “0” 至 “9” 范围内的字符
0-9
- 文字字符“。”
.
- 文字字符“-”
-
- 一次至无限次之间,尽可能多次,根据需要回馈(贪婪)
- 逐字匹配字符“。”
\.
- 匹配“A”至“Z”范围内的单个字符
[A-Z]{2,}
- 断言字边界处的位置
\b
创建于正则表达式好友