VBA中字符串的相关函数

目录

trim()、lcase()、ucase()

使用 len() 函数获得一个字符串长度

使用 left()  mid() ,right() 截取字符串 

使用 replace() 把字符串中的某个字符替换成其它字符

使用 split() 把字符串按某个字符分割 

instr运算符

Like运算符

使用string()进行填充


trim()、lcase()、ucase()

trim去掉字符串空格,lcase 小写、ucase 大写, 都是直接加字符串

使用 len() 函数获得一个字符串长度

       my_string = "diandian didi"
     str_len = Len(my_string)    '结果为13包含空格

使用 left()  mid() ,right() 截取字符串 

 left 是左截取, 从字符串左边开始,截取需要的字符个数

right 则从右边开始,截取需要的字符个数

mid 需要你输入字符串截取的开始位置和长度,一般可以配合instr使用

使用 replace() 把字符串中的某个字符替换成其它字符

Replace(目标字符串, 要替换字符, 替换成的字符)

replace_result1 = Replace(range("B18"),"1","哈")
replace_result2 = Replace(“as1df35w1fa352131sdgvasv”,"5","哈")

使用 split() 把字符串按某个字符分割 

把字符串按 an字符进行分割   

Public Sub diandiandidi12()
    
     my_string = "startdiandiandidiend"
     
     split_char = "an"
     
     split_results = Split(my_string, split_char, -1) '-1返回所有分割字符串
     
     For Each result In split_results
      
        Debug.Print result
        
     Next
  
End Sub

运行如下:

split_results = Split(my_string, split_char, -1)  这句中, 最后面的 -1 ,表示返回所有的分割结果, 这里看到,返回了三个分割的结果.

这个分割函数执行后,返回的是一个数组, 也就是split_results是一个数组, 数组是一种数据结构, 你可以把这种结构想像成一排柜子,每个柜子都有一个序号, 从0开始进行标号,每个柜子里都可以放一些东西, 如 split_results(0) 为 startdi

 

instr运算符

返回寻找字符串在另一个字符串(搜索范围)的位置,格式:Instr(搜索起始位置,搜索范围需搜索的字符串,匹配模式)    ,   其中中间两个为必须项 ,匹配模式知道两个即可:

0或省缺:区分大小写

1:不区分大小写

注意可以只有前三个参数,但是如果有规定了匹配模式则4个参数都要写完整,即不能只要后三个参数

几个例子:
instr(“ABCBD”,”B”)     ,    结果为2,在这里第1个参数省略了,那就是代表从头开始查找,第1个B出现在第2位上
instr(3,”ABCBD”,”B”)    ,  结果为4,第1个参数3代表从第3位的C开始向后找,找到的第1个B是在第4位上
instr(3,”ABCBD”,”b”,0)   ,  结果是0,第4个参数0代表区分大小写,原字符串中没有小写的b,所以结果是0。
instr(3,”ABCBD”,”b”,1)   ,  结果是4,第4个参数1代表不区分大小写,从第3个字符往后找到的第1个符合条件的是大写的B,在第4位。

利用instr这个特点我们常来判断原字符串中是否包括某特定字符,如果返回值是0就是不包含,是0以后的数就是包含,这个判定条件也经常用到。

  • 对比工作表函数find和search

find和search都是工作表自带函数,要在VBA中用前面必须加application,其可以用来在工作表中查找单元格,application.find和application.search

这两个函数也都可以在字符串中查找某个字符,其中find区分大小写,search不区分大小写

application.Find(“M”,”AMAAM”,3)  ,   结果是5,在字符串“AMAAM”中从第3个字符向后查找“M”,返回找到的第一个M的位置
application.search(“m”,”AMAAM”,3)  ,  结果也是5

这两个函数看似和instr相同,但其是工作表函数,局限很大,对其中原字符串的长度是有限制的,用instr就可以了

Like运算符

用于对比字符串

  • 字符串1 like 字符串2                  

Debug.Print "ABC" Like "ABc"         返回 False

  • 可以加通配符?代表一个字符,*代表一串字符 

Debug.Print "BA" Like "?A"     返回true,此例判断BA是不是长度为2,且第二个字符为A,?代表一个字符

Debug.Print "Excel精英培训" Like "*cel*"  返回tuue,此例判断字符串中是否包括cel,*代表一串字符

若要比较的?或*并不是通配符,则用[ ]括起来,表示是要对比其本身

Debug.Print "Q?B" Like "Q[?]B"  返回true,此例是要对比?本身,非通配

Debug.Print "QaB" Like "Q?B"  返回true,通配符

Debug.Print "QaB" Like "Q[?]B"  返回false,非通配符

  • 通配符#代表一个数字

Debug.Print 456 Like "#5#"   返回true

  • [ ] 代表来选定对比范围

[最小-最大最小2-最小3]        可以设定多个范围,用-连接

Debug.Print "q" Like "[A-Za-z]"    返回true, 判断q是不是字母

Debug.Print "H" Like "[A-GM-Z]"   返回False,判断H是不是在A-G,M-Z区间

Debug.Print "H" Like "[A-MO-RU-V]"   返回true,H在这三个区间内

Debug.Print 8 Like "[2-9]"   返回true,判断8是否在2-9之间

Debug.Print 8 Like "[!2-9]"   返回False, 有 ! 取反

Debug.Print "A" Like "[!C-Z]"   返回true,有!取反

Debug.Print "M" Like "[ABCDEUE]"   返回False,列出区间值

Debug.Print "M" Like "[!ABCDEUE]"   返回true,有!取反

Debug.Print "AEREM" Like "[A-C]*[L-P]"  返回true,判断以A-C开头,以L-P结尾,中间以*为通配符

Debug.Print "A334M" Like "[A-C]###[L-P]"  返回true

Debug.Print "AC" Like "[ABCDEUE][ABCDEUE]"   返回true,判断同时含有A和C

使用string()进行填充


该函数返回重复的字符或字符串。其语法为:
    String(number,character)    ,两个参数均为必须参数,number指定所返回的字符串的长度;参数character指定字符代码或字符串表达式。
使用String函数生成指定长度且只含单一字符的字符串。

  MyString = String(5, "*")   ,  返回 "*****"
  MyString = String(5, 42)    ,  返回 "*****"   没有“”括起来,十进制42的ASCII为*
  MyString = String(10, "ABC")    ,  返回 "AAAAAAAAAA",注意仅能填充单一字符
 

 

你可能感兴趣的:(VBA)