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",注意僅能填充單一字符
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章