获取字符串的第n行

时间:2012-12-12 22:08:02

标签: excel vba excel-vba

我有以下字符串:

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行中的第3行。这个字符串中的数字每天都会改变,所以任何帮助都会很棒。

4 个答案:

答案 0 :(得分:6)

最简单的方法是,如果它是一个字符串而不是您正在解析的文件或多行,则使用以下方法。假设字符串在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)

答案 1 :(得分:1)

使用Mid(string,start,length)和find(what,where,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包含您的字符串。如果您需要将其视为行尾标记,则将所有char(10)替换为“”。

优雅?当然不是!

答案 2 :(得分:1)

假设您正在使用VBA,这将解决问题 - 只需将str设置为您的字符串

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

答案 3 :(得分:0)

一种简单的方法是使用Split函数将字符串分解为数组。这需要一个字符串并在调试窗口中打印第三个项目。像这样......

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列中进行提取。