获取string的第n行

我有以下string:

BAXH14#cote href="nego_cotes_in_en.php?symbol=BAX&amp;instrument=BAXH14#cote">14 MAR</A></TD> <TD>98.620</TD> <TD>98.630</TD> <TD>98.620</TD> <TD>0</TD> <TD>33,568</TD> <TD>6,071</TD>< 

我想检索98.620中的第三行。 这个string中的数字每天都会改变,所以任何帮助都会很好。

假设你正在使用VBA这将做的伎俩 – 只要设置str到你的string

 Sub test() Dim str As String Dim n As Integer n = 3 str = "testData<TD>98.620</TD><TD>98.630</TD><TD>98.620</TD><TD>0</TD><TD>33,568</TD><TD>6,071</TD>" subSTR = str For i = 1 To n If Not (InStr(1, subSTR, "<TD>") = 0) Then subSTR = Right(subSTR, Len(subSTR) - InStr(1, subSTR, "<TD>") - 3) Else subSTR = "" Exit Sub End If Next i finalStr = Left(subSTR, InStr(1, subSTR, "</TD>") - 1) End Sub 

最直接的方法是,如果它是一个string,而不是一个文件,你parsing或跨多行是使用以下内容。 假定string位于Sheet1的范围(“A1”)中。

 Dim dataSplit() As String Dim returnData As String dataSplit = Split(Sheet1.Range("A1").Value2, "</TD>") returnData = Right$(dataSplit(2), Len(dataSplit(2)) - 5) 

使用中间(string,开始,长度)和查找(什么,在哪里,startpos),你可以跳过两个换行符 – char(10)和设置长度的第二个和第三个换行符之间的差异,如下所示: –

 =MID(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1,1)+1),FIND(CHAR(10),A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1,1)+1)+1)-FIND(CHAR(10),A1,FIND(CHAR(10),A1,1)+1)) 

假定A1包含你的string。 如果您需要将其作为行尾标记,则将所有字符(10)replace为“”。

优雅? 当然不是!

一个简单的方法是使用Split函数将string分解成一个数组。 这需要一个string,并在debugging窗口中打印第三个项目。 喜欢这个…

 Sub split_td() Dim values() As String Dim sourceString As String Dim result As String ' get your source data here sourceString = "<td>1</td><td>2</td><td>3 - pick me!</td><td>4</td>" 'break it into an array of strings values = Split(sourceString, "<td>") 'tidy up the end tag result = Replace(values(3), "</td>", "") Debug.Print values(3) End Sub 

如果你不介意在你的工作表中多出一列,那么你可以做这样的事情…

 A------------------------ B---------------------------------------------------------- <td>1</td><td>2</td><td>3 - pick me!</td><td>4</td> =SEARCH("<td>", B$1) =SEARCH("</td>",B$1) =SUBSTITUTE(SUBSTITUTE(MID(B$1,A2,A3-A2),"/",""),"<td>","") =SEARCH("</td>",B$1,A3+1) =SUBSTITUTE(SUBSTITUTE(MID(B$1,A3,A4-A3),"/",""),"<td>","") =SEARCH("</td>",B$1,A4+1) =SUBSTITUTE(SUBSTITUTE(MID(B$1,A4,A5-A4),"/",""),"<td>","") (etc) 

然后将文本操作的点放在列A中,并在列B中进行提取。