VBA如何查找字符字符串中某个字符的位置instr()函数

Instr()

函数返回字符或字符串在另一个字符串中第一次出现的位置.

表达式 Instr([start, ] strToBeSearched, strSearchFor [, compare])

允许数据类型: Start为搜索的起始值,strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)

实例: <%

strText = "This is a test!!"

pos = Instr(strText, "a")

response.write pos

%>

返回结果: 9

备注:如果接受搜索的字符串中没有要搜索的字符串,则返回结果为0。

实例:

<%

strText = "This is a test!!"

pos = Instr(strText, "b")

response.write pos

%>

返回结果: 0

自定义函数1,获取单一种类字符的所有位置,或第n个的位置。

=GetPosition(【单元格】,【查找字符】,【指定第n个,可省略】)

Function GetPosition(Cell, Txt, Optional k = 0)

n = InStr(Cell, Txt)

p = n

c = 1

Do

If c = k Then GetPosition = n: Exit Function

n = InStr(n + 1, Cell, Txt)

If n = 0 Then Exit Do

c = c + 1

p = p & "," & n

Loop

GetPosition = p

End Function

如何查找字符字符串中某个字符的所有位置,比如字符串“a<12345>bc<12345>ef<1>”

Sub Test()

istr = "a<12345>bc<12345>ef<1>"

Dim arr1()

Dim arr2()

n = 0

iloc = 0

Do

iloc = InStr(iloc + 1, istr, "<")

If iloc > 0 Then

ReDim Preserve arr1(0 To n)

arr1(n) = iloc

n = n + 1

End If

Loop Until iloc = 0

MsgBox "字符<出现的位置:" & Join(arr1, ",")

n = 0

iloc = 0

Do

iloc = InStr(iloc + 1, istr, ">")

If iloc > 0 Then

ReDim Preserve arr2(0 To n)

arr2(n) = iloc

n = n + 1

End If

Loop Until iloc = 0

MsgBox "字符>出现的位置:" & Join(arr2, ",")

End Sub

自定义函数2,获取一对(两种字符)的所有位置+B5,或第n对的位置。

=GetPairPosition(【单元格】,【查找字符1】,【查找字符2】,【指定第n对,可省略】)

Function GetPairPosition(Cell, Txt1, Txt2, Optional k = 0)

n1 = InStr(Cell, Txt1)

n2 = InStr(Cell, Txt2)

c = 1

p = n1 & "-" & n2

Do

If c = k Then GetPairPosition = n1 & "-" & n2: Exit Function

n1 = InStr(n1 + 1, Cell, Txt1)

n2 = InStr(n2 + 1, Cell, Txt2)

If n1 * n2 = 0 Then Exit Do

c = c + 1

p = p & "," & n1 & "-" & n2

Loop

GetPairPosition = p

End Function




免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,请读者仅作参考,并自行核实相关内容。如发现有害或侵权内容,请联系邮箱:jubao@pinlue.com,我们将在第一时间进行核实处理。

http://www.pinlue.com/style/images/nopic.gif
分享
评论
首页