前文介绍了一些常见报错,还有一些报错涉及未提到的知识点,将在以后的文章中介绍。

Excel的主体内容是单元格里的字符串,本文将介绍字符串的常用操作,全部学会后可以应对绝大多数针对Excel单元格内容的修改。
我把字符串操作分为提取、替换、删除、拼接、分割、去空格、获取长度、查找几类,以下一一介绍。下文中的代码都将声明旧字符串oldStr和新字符串newStr两个变量作为例子。
提取
提取字符串的某一部分有三种方式:提取开头,提取中间,提取结尾,他们分别对应Left、Mid、Right三个函数。
Left
Left函数写成这样:Left(str,n)
Left函数可以提取字符串str左边的n个字符,如以下代码:
Dim oldStr As String
Dim newStr As String
oldStr = "Hello World"
newStr = Left(oldStr, 4)
MsgBox newStr
代码中Left(oldStr, 4)会获得oldStr左边的4个字符,所以Msgbox会输出”Hell”。
注意:空格也是字符!
Mid
Mid函数写成这样:Mid(str,a,b)
Mid函数可以提取字符串str从a开始数的b个字符,如:
Dim oldStr As String
Dim newStr As String
oldStr = "Hello World"
newStr = Mid(oldStr, 4, 5)
MsgBox newStr
代码中Mid(oldStr, 4, 5)会获得oldStr中从第4个字符开始数的5个字符,即”lo Wo”。
Right
Left函数写成这样:Right(str,n)
Right函数可以提取字符串str右边的n个字符,如以下代码:
Dim oldStr As String
Dim newStr As String
oldStr = "Hello World"
newStr = Right(oldStr, 3)
MsgBox newStr
Right(oldStr, 3)会获得oldStr从右往左数的3个字符,所以Msgbox会输出”rld”。
替换和删除
字符串中要把某个子字符串替换成其他字符串或删掉,可以使用Replace函数。
Replace
Replace函数写成这样:Replace(str,a,b)
Replace 函数会把str里的所有a子字符串替换成b子字符串,如:
Dim oldStr As String
Dim newStr As String
oldStr = "Hello World"
newStr = Replace(oldStr, "o", "a")
MsgBox newStr
Replace(oldStr, "o", "a")会把oldStr里的”o”全部替换成”a”,这样Msgbox会输出”Hella Warld”。相同的,我们要删除某子字符串只需要把替换的内容b设置为空字符串””即可,如:
Dim oldStr As String
Dim newStr As String
oldStr = "Hello World"
newStr = Replace(oldStr, "o", "")
MsgBox newStr
这会输出”Hell Wrld”。
start
Replace函数还有其他参数,比如第三个参数start可以控制从什么位置返回子字符串,如使用Replace(oldStr, "o", "a",Start:=7),会从oldStr的第七个字符开始返回字符串,Msgbox会输出”Warld”。
count
Hello World里有两个”o”,所以默认会替换两次。如果想限制字符串替换次数,则可以设置replace函数的第四个参数count,Replace(oldStr, "o", "a", Count:=1)会限制只替换1次,所以Msgbox会输出”Hella World”。
Compare
第五个参数compare可以设置比对方式,比如我们要把”o”替换成”a”,那么要不要替换大写字母”o”呢,compare参数可以帮助我们设置:
compare设置成1,表示不区分大小写:
Dim oldStr As String
Dim newStr As String
oldStr = "HellO World"
newStr = Replace(oldStr, "o", "a", Compare:=1) '输出"Hella Warld"
MsgBox newStr
compare设置成0,表示区分大小写:
Dim oldStr As String
Dim newStr As String
oldStr = "HellO World"
newStr = Replace(oldStr, "o", "a", Compare:=0) '输出"HellO Warld"
MsgBox newStr
拼接
在过去的一篇介绍运算符的文章中,我曾提到过&运算符可以把两个字符串拼接起来:
a = "Ap"
b = "ple"
c = a & b
MsgBox c ‘输出”Apple”
分割
我们可以使用Split函数把”1,2,5,3,66,78”这样的字符串分割成数组:
str = "1,2,5,3,66,78"
arr= Split(str, ",")
这将在之后的数组一篇中详细介绍。
去空格
操作字符串时会因为种种原因把字符串变成这样:
”Hello World ”
” Hello World”
” Hello World ”
遇到这种两边多了一些空格的字符串往往令人烦恼。不过不用担心,因为我们有伟大的Trim函数!
Trim(str)可以直接把字符串str两边的空格一扫而空:
Dim oldStr As String
Dim newStr As String
oldStr = " Hello World "
newStr = Trim(oldStr)
MsgBox newStr '输出"Hello World"
获得字符串长度
Len (str)可以获得字符串str的长度:
Dim str As String
str = "Hello World"
MsgBox Len(str) '输出11
查找
可以使用Instr函数查找字符串中的子字符串位置。
Instr函数这样写:InStr(a,b)
InStr(a,b)会获得字符串a中子字符串b的位置:
Dim str As String
str = "Hello World"
MsgBox InStr(str, "Wo") '输出7
掌握以上这些字符串的操作,处理绝大多数的文本已经绰绰有余了。下一篇我们来介绍新概念:数组。