Excel VBA 学习总结 - 内置函数
了解VBA与Excel内置的函数,能够使我们处理起任务来事半功倍。这些函数不仅使用方便,而且效率一般都比较高(有些是例外的,特别是某些工作表函数),比我们自己写的要高效的多。
1. VBA内置的函数
VBA内置函数是VBA种可以直接使用的函数,很多处理函数也相当有用。
调用方式:直接使用函数,或者使用VBA调用。例如Shell()或者VBA.Shell()。
VBA内置的函数主要涉及以下几类:
测试类函数:
IsNumeric(x) - 是否为数字, 返回Boolean结果。
IsDate(x) - 是否是日期, 返回Boolean结果。
IsEmpty(x) - 是否为Empty, 返回Boolean结果。
IsArray(x) - 指出变量是否为一个数组。
IsError(expression) - 指出表达式是否为一个错误值。
IsNull(expression) - 指出表达式是否不包含任何有效数据 (Null)。
IsObject(identifier) - 指出标识符是否表示对象变量。
数学函数:
Sin(X)、Cos(X)、Tan(X)、Atan(x) - 三角函数,单位为弧度。
Log(x)、Exp(x) - 返回x的自然对数,指数。
Abs(x) - 返回x的绝对值。
Int(number)、Fix(number) - 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8。
Sgn(number) - 返回一个 Variant (Integer),指出参数的正负号。
Sqr(number) - 返回一个 Double,指定参数的平方根。
VarType(varname) - 返回一个 Integer,指出变量的子类型。
Rnd(x) - 返回0-1之间的单精度数据,x为随机种子。
Round(x,y) - 把x四舍五入得到保留y位小数的值。
字符串函数:
Trim(string)、Ltrim(string)、Rtrim(string) - 去掉string左右两端空白,左边的空白,右边的空白。
Len(string) - 计算string长度
Replace(expression,find,replace) - 替换字符串。
Left(string, x)、Right(string, x)、Mid(string, start,x) - 取string左/右/指定段x个字符组成的
字符串
Ucase(string)、Lcase(string) - 转换字符串为大、小写
Space(x) - 返回x个空白的字符串
Asc(string) - 返回一个 integer,代表字符串中首字母的字符代码
Chr(charcode) - 返回 string,其中包含有与指定的字符代码相关的字符
InStr() - 返回一个字符串在另外一个字符串中的位置,返回值为Variant(Long)型。
转换函数:
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
时间函数:
Now、Date、Time - 返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。
Timer - 返回一个 Single,代表从午夜开始到现在经过的秒数。
TimeSerial(hour, minute, second) - 返回一个 Variant (Date),包含具有具体时、分、秒的时间。
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) - 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
Second(time) - 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒。
Minute(time) - 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟。
Hour(time) - 返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点。
Day(date) - 返回一个 Variant (Integer),其值为 1 到 31 之间的整数,表示一个月中的某一日
Month(date) - 返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月。
Year(date) - 返回 Variant (Integer),包含表示年份的整数。
Weekday(date, [firstdayofweek]) - 返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几。
其它常用函数:
其它常用函数:
Shell - 运行一个可执行的程序。
InputBox - 这个太熟悉了,简单输入对话框。这个需要注意与Application.InputBox(更强大,内置容错处理,选择取消后返回false)区分,而这个函数不含有容错处理,而且选择取消后返回空串(零个字节的字符串)。
MsgBox - 这个更不用说了,简单信息显示对话框,其实也是一种简单的输入手段。
Join - 连接数组成字符串。
Split - 拆分字符串成数组。
RGB - 返回指定R、G、B分量的颜数值。
Dir - 查文件或者文件夹。
IIF(expression, truePart, falsePart) - IF语句的“简化版本”(比喻,当然并不一样);expression为true的话返回truePart,否则返回falseParth。
Choose(index, choice1,...choiceN) - 选择指定Index的表达式,Index可选范围是1到选项的总数。
Switch(exp1,value1,exp2,value2,...expN,valueN) - 从左至右计算每个exp的值,返回首先为true的表达式对应的value部分。如果所有的exp值都不为true,则返回Null。注意虽然只返回一个部分,但是这里所有的表达式exp1到expN都是要被计算的,实际使用中要注意这个副作用。
部分内容来自下面的连接,感谢楼主的无私奉献。大家入门学学还是很不错的,推荐一下:lhome/forum.php?mod=viewthread&tid=178278&extra=page%3D3%26filter%3Ddigest%26digest%3D1&page=1
2. WorksheetFunction工作表函数
WorksheetFunction工作表函数是Excel内置的处理函数,计算功能相当强大。
调用方式:Application.WorksheetFunction或者直接WorksheetFunction。例如Application.WorksheetFunction.Max()或者WorksheetFunction.Max()。
VBA内置的函数是用于处理程序数据的,是为VB语言服务的,所有VBA宿主环境都可以使用这些内置的功能。但是对于Worksheet中的对象,似乎这些通用的函数并不能提供最佳
的实践。所以针对Sheet,又存在另外一套相关的处理函数,虽然它们与VBA中的某些函数作用是一样的,但是从“工作表函数”这个名字上就可以看出,对于工作表中的对象的所有操作,比如对单元格求和,求单元格中最大值等,使用工作表函数必将具有先天的优势(当然了,工作表函数基本上都是可以在Excel单元格中直接输入“=”然后就可以使用的)。虽然从实际的操作中,我们可能发现,使用内置的工作表函数并不一定是最快,最高效的,但无疑是最直接,最省事的。
这里简单总结一下常用的几类函数。全部的函数说明参见文末的MSDN链接。
数学函数类:
数学函数类:
BesselI(贝塞尔函数) BesselJ BesselK BesselY Power(指数) Log(对数,还有以不同) In(自然对数) Fact(阶乘) FactDouble(半数阶乘,意思就是偶数的只计算偶数阶乘,奇数的只奇数奇数阶乘) PI(圆周率)
弦值计算类:
弦值计算类:
Acos Acosh Asin Asinh Atan2 Atanh Cosh Sinh Tanh
数制转换类:
数制转换类:
Bin2Dec Bin2Hex Bin2Oct Dec2Bin Dec2Hex Dec2Oct Hex2Bin Hex2Dec Hex2Oct Oct2Bin Oct2Dec Oct2Hex Degrees与Radians(弧度角度互换).
数值处理类:
Ceiling(arg1,arg2) - 数值舍入处理,把arg1舍入处理成arg2的最接近的倍数(大于等于传入的参数)。
Floor(arg1,arg2) - 数值舍入处理,把arg1舍入处理成arg2的最接近的倍数(小于等于传入的参数)。
datediff是字符型函数Round - 按指定的位数四舍五入,返回类型是Double。
MRound - 按指定位数四舍五入,参数是Variant,返回类型是Double.
RoundDown - 舍去指定位数后面的小数,总是小于等于传入的参数,其它的基本同Round。
RoundUp - 舍去指定位数后的小数总是进1,总是大于等于传入的参数,其它的基本同Round。
Fixed - 按指定的位数四舍五入,返回类型是String,可以指定显示不显示逗号(第三个参数决定,False则显示逗号,True则不显示逗号).
数值处理类:
Ceiling(arg1,arg2) - 数值舍入处理,把arg1舍入处理成arg2的最接近的倍数(大于等于传入的参数)。
Floor(arg1,arg2) - 数值舍入处理,把arg1舍入处理成arg2的最接近的倍数(小于等于传入的参数)。
datediff是字符型函数Round - 按指定的位数四舍五入,返回类型是Double。
MRound - 按指定位数四舍五入,参数是Variant,返回类型是Double.
RoundDown - 舍去指定位数后面的小数,总是小于等于传入的参数,其它的基本同Round。
RoundUp - 舍去指定位数后的小数总是进1,总是大于等于传入的参数,其它的基本同Round。
Fixed - 按指定的位数四舍五入,返回类型是String,可以指定显示不显示逗号(第三个参数决定,False则显示逗号,True则不显示逗号).
Odd - 返回比参数大的最接近的奇数。
Even - 返回比参数大的最接近的偶数。
Even - 返回比参数大的最接近的偶数。
数值运算类:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论