1

我有以下字符串:

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

4

4 回答 4

6

如果它是一个字符串而不是您正在解析或跨多行的文件,最直接的方法是使用以下内容。假设字符串在 Sheet1 的 Range("A1") 中。

Dim dataSplit() As String
Dim returnData As String

dataSplit = Split(Sheet1.Range("A1").Value2, "</TD>")

returnData = Right$(dataSplit(2), Len(dataSplit(2)) - 5)
于 2012-12-12T23:06:08.097 回答
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 包含您的字符串。如果您需要将其视为行尾标记,则将所有字符(10)替换为“”。

优雅的?当然不是!

于 2012-12-12T22:39:06.460 回答
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
于 2012-12-12T22:52:37.300 回答
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 列中进行提取。

于 2012-12-12T23:17:56.293 回答