目錄
使用 left() mid() ,right() 截取字符串
使用 replace() 把字符串中的某個字符替換成其它字符
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",注意僅能填充單一字符