Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环从Excel VBA中的单个字符串中提取两个不同的字符串_Excel_Vba_String_Extract - Fatal编程技术网

循环从Excel VBA中的单个字符串中提取两个不同的字符串

循环从Excel VBA中的单个字符串中提取两个不同的字符串,excel,vba,string,extract,Excel,Vba,String,Extract,我收到excel中的html文本,我只是想从中提取一些文本 我在单元格A1中有以下文本: <b>From:</b></p> </td> <td width=760 colspan=10 valign=bottom style='width:380.0pt;padding:0in 0in 0in 0in; height:9.05pt'> <p class=MsoNormal><a href="ma

我收到excel中的html文本,我只是想从中提取一些文本

我在单元格A1中有以下文本:

<b>From:</b></p>  </td>  
<td width=760 colspan=10 valign=bottom 
     style='width:380.0pt;padding:0in 0in 0in 0in;  height:9.05pt'>  
<p class=MsoNormal><a href="mailto:name@email.com">LastName, First</a></p>  
</td> </tr>
From:

我想提取“name@email.com和“LastName,First”,分别放入单元格B1和C1。我需要把这个循环通过多个单元格,所以我需要考虑字符串长度的不同。


对于更多的上下文,这篇文章为我要做的事情提供了一个很好的基础,但是我一直坚持下去,因为我拉的字符串会在长度和内容上有所不同。p> 在A1中输入字符串,在B1中输入:

=LEFT(MID(A1,FIND("mailto:",A1)+7,9999),FIND(CHAR(34),MID(A1,FIND("mailto:",A1)+7,9999))-1)
=LEFT(MID(A1,FIND(B1,A1)+LEN(B1)+2,9999),FIND("<",MID(A1,FIND(B1,A1)+LEN(B1)+2,9999))-1)
并在C1中输入:

=LEFT(MID(A1,FIND("mailto:",A1)+7,9999),FIND(CHAR(34),MID(A1,FIND("mailto:",A1)+7,9999))-1)
=LEFT(MID(A1,FIND(B1,A1)+LEN(B1)+2,9999),FIND("<",MID(A1,FIND(B1,A1)+LEN(B1)+2,9999))-1)

=LEFT(MID(A1,FIND(B1,A1)+LEN(B1)+29999),FIND(可能是这样的。注意引号(“),我的HTML变量代码没有考虑它!在HTML代码字符串分隔符中查找始终相同的字符串分隔符

Dim HTMLarray1() As String
Dim HTMLarray2() As String
Dim HTML As String

HTML = "<b>From:</b></p></td><td width=760 colspan=10" _
& "valign=bottom style='width:380.0pt;padding:0in 0in 0in 0in;" _
& "height:9.05pt'><p class=MsoNormal>" _
& "<a href="mailto:name@email.com">LastName, First" _
& "</a></p></td></tr>"

HTMLarray1 = Split(HTML, "<a href="mailto:")
HTMLarray1 = Split(HTMLarray1(1), "">")
HTMLarray2 = Split(HTMLarray1(1), "</a>")

Dim email As String
Dim name As String
email = HTMLarray1(0)
name = HTMLarray2(0)
Dim htmlaray1()作为字符串
Dim HTMLARAY2()作为字符串
将HTML设置为字符串
HTML=“From:

”_ &“

” htmlaray1=Split(HTML,“”) 将电子邮件设置为字符串 将名称设置为字符串 电子邮件=htmlaray1(0) name=htmlaray2(0)
.IIRC有一个库,你可以引用它来解析HTML,然后提取你需要的特定节点,假设单元格包含实际有效的HTML。我被告知HTML无效,因为有些单元格缺少结束标记等。但幸运的是,我需要的文本周围的标记在每个单元格中都是一致的。所以基本上你需要从无效的HTML中提取
标记。并且只有一个这样的标记?是的,两个问题都有。我需要提取A标记,并从那里区分提取(mailto:)和(“>)之间的文本以获取电子邮件,以及(“>)和()对于LastName,首先可以使用
InStr
获取
的第一个索引;然后可以使用其他标准字符串操作函数提取所需的子字符串(
Mid
InStr
Left
Trim
)基本上是Gary的学生发布的Excel公式的代码版本。这完成了任务,谢谢!我正在努力制作上面提到的代码版本。