本教程参考网络诸多大神的灵感,如有侵权,请联系删除
VBA 信息函数
IS类函数isBlank(value)
isErr(value)
isError(value)
isLogical(value)
isNa(value)
isNontex(value)
isNumber(value)
isRef(value)
isText(value)
isStr(value)
value是需要检验的参数。分别为空白单元格、错误值、逻辑值、文本、数字、引用值
如果函数中的参数为下面的内容,则返回TRUE,
ISBLANK的参数是空白单元格,ISERR的参数是任意错误值(除去#N/A),ISERROR的参数是任意错误值(#N/A、#value!、#REF!、#DIV/0!、#NUM!、#NAME?或#NULL!),ISLOGICAL的参数是逻辑值,ISNA的参数是错误值#N/A,ISNONTEXT的参数是任意不是文本的内容(此函数在值为空白单元格时返回TRUE),ISNUMBER的参数是数字,ISREF的参数是引用,ISTEXT的参数是文本,ISSTR的参数是字符串。
VBA 转换函数CBool(expression) '转换为Boolean型
CByte(expression) '转换为Byte型
CCur(expression) '转换为Currency型
CDate(expression) '转换为Date型
CDbl(expression) '转换为Double型
CDec(expression) '转换为Decemal型
CInt(expression) '转换为Integer型
CLng(expression) '转换为Long型
CSng(expression) '转换为Single型
CStr(expression) '转换为String型
CVar(expression) '转换为Variant型
Val(string) '转换为数据型
Str(number) '转换为String
VBA 编码函数
AscMyNumber = Asc('A') ' 返回 65
MyNumber = Asc('a') ' 返回 97
MyNumber = Asc('Apple') ' 返回 65
用来判断大小写!!!
Chr Chr(charcode)
'其中参数charcode代表字符码,一般为0~255。例如:
MyChar = Chr(65) ' 返回 A
MyChar = Chr(97) ' 返回 a
MyChar = Chr(62) ' 返回 >
MyChar = Chr(37) ' 返回 %
0 Null '相当于vbNullChar常数
8 BS '相当于vbBack常数
9 TAB '相当于vbTab常数
10 CR '相当于vbCr和vbCrLf常数
13 LF '相当于vbLf和vbCrLf常数
34 “” '引号
VBA 格式化函数
FormatFormat(expression[, format[, firstdayofweek[, firstweekofyear]]])
参数expression必须,为任何有效的表达式;其余参数均可选。参数format表示所要采用的格式,参数firstdayofweek使用常数,表示一星期的第一天,参数firstweekofyear使用常数,表示一年的第一周。在参数format中,使用字符@,表示空格或字符占位符,如果在输入的字符串相应位置有字符,则显示该字符,否则显示空格;使用字符&,表示空或字符占位符,如果在输入的字符串的相应位置有字符,则显示该字符,否则不显示;使用字符<,则将所有字符显示为小写格式;使用字符>,则将所有字符显示为大写格式;使用字符!,强制占位符从左向右填满, 满足默认为从右向左。strOut = Format('8888888', '(@@@)&&&-&&&&') '返回( )888-8888
strOut = Format('8888888', '(&&&)&&&-&&&&') '返回()888-8888
strOut = Format('Hello', '>@@@@@') ‘返回HELLO
在Format函数中,还可以同时格式化普通字符串和空字符串,只须在指定的格式中用分号隔开两个部分,第一部分用于非空字符串,第二部分用于空字符串。例如:strOut = Format('6666666', '(@@@)&&&-&&&&;No Phone') '返回( )666-6666
strOut = Format('', '(@@@)&&&-&&&&;No Phone') '返回No Phone
文本函数
VBA 查找字符串
InStrInStr([Start, ]string1, string2[, compare])
参数Start为可选参数,设置查找的起点,如果省略,则从第一个字符的位置开始查找,当指定了参数Compare时,则要指定此参数。参数string1为被查找的字符串,参数string2为要查找的字符串,这两个参数都是必需的。如果在String1中没有找到String2,返回0;如果找到String2,则返回String2第一个出现的首字符位置(即1到String1的长度);如果String2的长度为零,返回Start。
InStrRevInStrRev(String1, String2[, [Start[, compare])
InStrRev函数返回一个字符串在另一个字符串中出现的位置,与InStr函数不同的是,从字符串的末尾算起。
注意参数位置。
大小写转换函数
工作表函数
Lower
将指定对象所有英文字母转换为小写。
Upper
将指定对象所有英文字母转换为大写。
Proper
将指定对象所有英文首字母大写。Sub 大小写转换()
Dim str As String
str = '把学的写出来 author: mr ww'
Debug.Print Excel.Application.WorksheetFunction.Lower(str)'把学的写出来 author: mr ww'
Debug.Print Excel.Application.WorksheetFunction.Upper(str)'把学的写出来 AUTHOR: MR WW'
Debug.Print Excel.Application.WorksheetFunction.Proper(str)'把学的写出来 Author: Mr Ww'
End Sub
VBA 函数Debug.Print Ucase('把学的写出来 author: mr ww')
Debug.Print Lcase('把学的写出来 author: mr ww')
查找
Find
查找指定字符串在某一对象中的位置,可以设置起始查找位置。Find(指定查找字符, 查找对象, [起始查找位置])
Search
查找指定字符串在某一对象中的位置,可以设置起始查找位置。Search(指定查找字符, 查找对象, [起始查找位置])Sub 查找()
Dim str As String
str = '把学的写出来 author: mr ww Ww'
Debug.Print Excel.Application.WorksheetFunction.Find('Ww', str, 1)'21
Debug.Print Excel.Application.WorksheetFunction.Search('Ww', str, 1)'19
End Sub
注意:find()函数区分大小写,search()函数不区分大小写。
LookUplookup(查找对象, 查找对象所在的列(单列哟), 目标值所在的列)
这个工具使用之前,要对查找对象所在的列升序排序,当查找值在查找区域中找不到目标值的时候,就会返回该区域中的最大值。
尽量不要用,比较鸡肋。
VlookUpvlookup(查找对象列, 目标区域(可多列哟), 目标区域所在列的自然序号, 精确/模糊匹配)
注意:查找对象一定要位于目标区域 的第一列,然后依次往后数就好了。
两者在参数上面设置的不同要特别引起关注。
matchmatch(查找值, 查找值所在区域(可多列哟), [精确/模糊])'返回特定值在特定数组当中的相对位置
indexindex(区域, 行, 列)'在特定的区域,取出特定行、列交叉的值,类似二维数组
替换
ReptRept(指定对象, 重复次数)
将指定对象,重复指定次数
String(number,character),该函数返回重复的字符或字符串,用法同上。
ReplaceReplace(指定对象, 开始位置, 指定长度, 替换内容)
将指定对象中指定位置和长度的内容进行替换。Sub 替换()
Dim str As String
str = '把学的写出来 author: mr ww'
Debug.Print Excel.Application.WorksheetFunction.Replace(str, 8, 6, '作者')
'把学的写出来 作者: mr ww
Debug.Print Excel.Application.WorksheetFunction.Rept('ww_', 4)
'ww_ww_ww_ww_
End Sub
SubstituteSubstitute(指定对象, 要替换的内容, 替换后的内容, [从第几个*要替换的*内容开始替换])
在指定的对象中指定对象进行替换,
这个函数的最后一个参数表示,如果一个文本中有几个重复的内容,最后一个参数可以指定,从第几个重复内容开始起,进行替换。默认全部替换。
提取字符串函数
LeftLeft(String,CharNum)
Left函数可以从字符串的左边开始提取字符或指定长度的字符串,即返回包含字符串中从左边算起指定数量的字符。
其中,如果参数String包含Null,则返回Null;如果参数CharNum的值大于或等于String的字符数,则返回整个字符串。
RightRight(String,CharNum)
Right函数从字符串的右边开始提取字符或指定长度的字符串,即返回包含字符串中从右边起指定数量的字符。
其中,如果参数String包含Null,则返回Null;如果参数CharNum的值大于或等于String的字符数,则返回整个字符串。
MidMid(String,Start[,Len])
Mid函数可以从字符串中提取任何指定的子字符串,返回包含字符串中指定数量字符的字符串。
其中,如果参数String包含Null,则返回Null;如果参数Start超过了String的字符数,则返回零长度字符串('');如果参数Len省略或超过了文本的字符数,则返回字符串从Start到最后的所有字符。Sub 把学的写出来()
Dim str, LeftStr, RightStr, MidStr As String
str = '把学的写出来'
LeftStr = Left(str, 2)
RightStr = Right(str, 2)
MidStr = Mid(str, 2, 3)
Debug.Print Len(str)'6 => len返回字符串元素个数,注意与`lenb`区分
Debug.Print LeftStr'把学
Debug.Print RightStr'出来
Debug.Print MidStr'学的写
End Sub
SplitSplit(expression[,delimiter[,limit[,compare]]])
Split函数返回一个下标从零开始的一维数组,包含指定数目的子字符串。
其中,参数expression必需,表示包含子字符串和分隔符的字符串,若expression是一个长度为零的字符串(''),该函数则返回一个没有元素和数据的空数组;参数delimiter用于标识子字符串边界的字符串字符,若忽略则使用空格(' ')作为分隔符,若是一个长度为零的字符串则返回仅包含一个元素的数组,该元素是expression所表示的字符串;参数limit表示要返回的子字符串数,-1表示返回所有的子字符串;参数compare表示判别子字符串时使用的比较方式。Sub split()
Dim str As String
str = '把,学,的,写,出,来'
splitStr = VBA.split(str, delimiter:=',')
For Each sstr In splitStr
Debug.Print sstr
Next
End Sub
'输出:
把
学
的
写
出
来
连接字符串
JoinJoin(sourcearray[,delimiter])
Join函数返回连接某数组中的多个子字符串而组成的字符串,即将数组中的字符串连接起来。Sub 连接字符串()
Dim arr(5)
arr(0) = '1' 'Number as String
arr(1) = 'VBScript' 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/7/2013# 'Date
arr(5) = #12:45:00 PM# 'Time
Debug.Print Join(arr, '_')
'1_VBScript_100_2.45_VBScript_100_2.45_2013/10/7_12:45:00
End Sub
Sub 连接字符串()
Dim arr(5)
arr(0) = '1' 'Number as String
arr(1) = 'VBScript' 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/7/2013# 'Date
arr(5) = #12:45:00 PM# 'Time
Dim arr2()
arr2 = Array('把学的写出来', '作者', 'ww', '敬上')
For Each a In arr
Debug.Print a
Next
Debug.Print Join(arr2, '_')
End Sub
删除空格
LTrim
LTrim函数删除字符串前面的空格;
RTrim
RTrim函数删除字符串后面的空格;
Trim
Trim函数删除两头的空格。Sub 把学的写出来()
Dim str, LeftTriming, RightTriming, Triming As String
str = ' 把学的写出来 '
LeftTriming = LTrim(str) ''把学的写出来 '
RightTriming = Right(str)'' 把学的写出来'
Triming = Trim(str)''把学的写出来'
End Subs2 = s1.TrimStart 'Removes the spaces at the start.
s2 = s1.TrimEnd 'Removes the white spaces at the end.
数值函数
绝对值函数
Absabs()'取绝对值
四舍五入
Roundround(数字, 保留小数位数)'四舍五入
RoundUproundup(数字,保留小数位数)'只入
RoundDownrounddown(数字,保留小数位数)'只舍
Eveneven(数字) '入到最近的偶数
Oddodd(数字) '入到最近的整数
Intint(数字)'地板取整,向下取整
数据截取
Trunctrunc(数字, 保留小数点位数)'截取小数,可以将小数部分全部截取
数据幂次方
Powerpower(数字, 幂次方)'返回幂次方
^同上
多数乘积
Productproduct(数字1, 数字2, ...)'返回一串数字的乘积
SumProductsumproduct(区域1, 区域2, ...)'返回多列区域乘积
Modmod(被除数, 除数)'取余
随机数
Randrand()'返回随机数
RandBetweenrandbetween(开始, 结束)'返回指定区间内的随机*整数*
计数函数
count家族函数
countcount(区域)'统计该区域数字单元格个数
countAcountA(区域)'统计该区域非空单元格个数
countIfcountif(区域, 要满足的条件)'返回该区域满足条件的单元格个数
countIfscountifs(区域, 要满足的条件, 要满足的条件, ...)'返回该区域满足条件的单元格个数
countBlankcountblank(区域)'统计该区域空单元格个数
有一个函数非常牛逼,subtotal,类似pandas库中的apply函数,可以自行组合搭配使用,最牛逼的功能,个人感觉。
最大/小值/平均值/中位数
这些小学知识,不再赘述。
时间函数
时间函数无非就是年、月、周、日、时、分、秒,以及其中的组合搭配而已。
todaytoday()'返回当天日期
nownow()'返回系统时间
day
month
yearday/month/year(日期)'返回年、月、日
常与today()、format( , 'yyyymmdd')搭配使用。
日期差函数
daysdays(结束日期, 开始日期)'日期之间天数
datadifdatadif(开始时间, 结束时间, '[y[[/m]/d]')'返回日期差,以年、月、日算
edateedate(指定日期, 前/后月份)'前进1月或后退1月,返回指定日期,前/后月份的日期
如果日期是2020/03/29时,使用这个函数往前退一个月怎么办?
eomontheomonth(指定日期, 前/后月份)'返回指定日期前/后月份最后一天
weekdayweekday(日期, [自己看吧,太多了])'返回星期几的函数
注意:
在excel单元格中,数字和日期都是靠着单元格右侧,文本都是靠着单元格左侧。
所有函数实例笔者已编写实例验证
参考文档
CSDN >>> http://club.excelhome.net/thread-903036-1-1.html
博 客 >>> https://blog.csdn.net/nj198624/article/details/8160404
对未来真正的慷慨,是把一切献给现在。
上一篇:VBA 高级进阶
下一篇:联合excel与outlook,自动发送邮件
联系客服