vba抓取网页数据(《函数》逐个判断(二):Instr函数)

优采云 发布时间: 2022-01-07 23:11

  vba抓取网页数据(《函数》逐个判断(二):Instr函数)

  VBA中的Instr函数可以找到指定字符第一次出现的位置,但是有时候需要找到的字符的第N个位置,VBA没有提供可以支持这个功能的函数。

  示例:查找字符串 A123-B1234-C12345-D12345 中第三次出现的减号。

  

  Sub Demo1()

msg = "A123-B1234-C12345-D12345"

cnt = 0

nth_pos = 3

For i = 1 To Len(msg)

If Mid(msg, i, 1) = "-" Then

cnt = cnt + 1

If cnt = nth_pos Then

MsgBox "定位位置:" & i

Exit Sub

End If

End If

Next

End Sub

  代码分析:

  第四行代码指定查找第三次出现的位置。

  第5~13行代码循环判断字符。

  第六行确定第 N 个字符是否为减号。

  如果满足条件,第 7 行的代码计数器加 1。

  第8行代码判断当前位置并指定字符出现的次数。如果满足定位条件,则低9行代码输出信息,第10行代码结束编码过程。

  一个一个的判断每个字符是正常的想法,但是如果字符串较长,则需要更多的时间。

  Sub Demo2()

msg = "A123-B1234-C12345-D12345"

nth_pos = 3

arr = Split(msg, "-")

For i = 0 To nth_pos - 1

cnt = cnt + Len(arr(i)) + 1

Next

MsgBox "定位位置:" & cnt

End Sub

  代码分析:

  第三行代码指定了查找第三次出现的位置。

  第四行代码 split 函数将字符串拆分为数组。

  第 5 到第 7 行的代码是 For 循环。split函数的返回值数组的下标从零开始,因此循环终止值设置为nth_pos-1。

  第6行代码循环累加数组元素的字符数,最后加一个相当于一个分隔符。

  第 8 行代码输出信息。

  

  使用split函数拆分成数组后,可以有效减少循环次数,提高代码效率。

  注意:示例代码中没有容错机制。如果指定的次数超过了被搜索字符在源字符串中出现的次数,则会产生错误结果。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线