Excel 单元格示例数据:
Subject :Contact from Al Meezan Investment<br/> Email Body: Name: Gulzar ali mirbahar
Email: [email protected]
Contact Number: 03412770800
Subject: Can I eligible of this offer
答案1
对于这种格式的数据(即电子邮件后跟联系电话,后跟主题,并且每个都标记为这样),您可以使用FIND
和MID
函数来提取电子邮件和联系电话。
要提取电子邮件,您可以使用以下命令:
=MID(A1,FIND("Email:",A1)+LEN("Email: "),FIND("Contact Number:",A1)-FIND("Email:",A1)-LEN("Email: "))
分解:
该MID
函数有三个参数:
1. 要从中提取文本的单元格,
2. 目标文本从哪个字符索引开始(例如,40
从 A1 中的第 40 个字符开始),以及
3. 要提取多少个字符。
第一个参数就是A1
。
第二个参数是FIND("Email:",A1)+LEN("Email: ")
。这基本上表示您要提取的电子邮件地址从 之后的索引开始Email:
。
第三个参数是FIND("Contact Number:",A1)-FIND("Email:",A1)-LEN("Email: ")
。这是一种计算电子邮件地址长度的方法。
答案2
虽然您没有要求使用 VBA 解决方案,而且您当然可以使用公式来实现这一点,但对于更通用的解决方案,用户定义函数 (UDF) 可能在这里很方便。您可以提取以已知标签开头的任何行的内容。
如果您要执行更复杂的提取,不同的算法可能会更有价值。
算法
- 根据换行符拆分单元格内容
- 根据需要拆分每一行
Label
- 如果标签不存在,则结果
Split
将是一个具有单个条目的数组,否则将有两个条目
- 如果标签不存在,则结果
- 如果
Split
有两个条目,则返回第二个。
要输入此用户定义函数 (UDF),alt-F11请打开 Visual Basic 编辑器。确保您的项目在 Project Explorer 窗口中突出显示。然后,从顶部菜单中选择插入/模块并将以下代码粘贴到打开的窗口中。
要使用此用户定义函数 (UDF),请输入如下公式
=cellPart(A1,"email:")
在某个牢房里。
Option Explicit
Option Compare Text
'Extract any line starting with sLabel
Function cellPart(myCell As Range, sLabel As String) As String
Dim V, W, X
V = Split(myCell.Text, vbLf)
For Each W In V
X = Split(W, sLabel)
If UBound(X) = 1 Then
cellPart = CStr(Trim(X(1)))
Exit Function
End If
Next W
End Function
答案3
仅根据您提供的唯一示例,您可以使用以下 2 个公式
(这将对单元格 A1 中的数据起作用)
电子邮件:
=MID(A1,SEARCH("Email:",A1)+6,SEARCH("contact Number:",A1)-SEARCH("Email:",A1)-6)
联系电话:
=MID(A1,SEARCH("contact Number:",A1)+16,SEARCH("subject:",A1)-SEARCH("contact Number:",A1)-16)