excel unique函数 (excel if函数的使用方法)

函数是一个自我包含的完成一定相关功能的执行代码段,就是将要实现的功能进行模块化,它是实现某种功能的算法集合,有助于程序的可重用性。除了EXCEL前端提供的大量函数外,EXCEL VBA也提供了一些便于后台编程的函数,包括字符串、日期、判断等类别的函数。

1、常用函数列表

I、VBA字符串函数

字符串处理是程序设计中最常见的操作,掌握对字符串的处理也是开始学习一种编程语言的开始。VBA提供了两类字符串,即定长和变长字符串。定长字符串声明如下:

Dim str As String * 10

此时,字符串str占用10个字符的内存位置,只能保留10个字符。

变长字符串声明如下:

Dim str As String

这样,字符串str可以保存任意长度字符,字符串长度为为其保存字符的实际数量。

常用字符串列表如下:

函数

备注

Trim(string)

去掉string左右两端空白

Ltrim(string)

去掉string左端空白

Rtrim(string)

去掉string右端空白

Len(string)

计算string长度

Left(string, x)

取string左段x个字符组成的字符串

Right(string, x)

取string右段x个字符组成的字符串

Mid(string, start,x)

取string从start位开始的x个字符组成的字符串

Ucase(string)

转换为大写

Lcase(string)

转换为小写

Space(x)

返回x个空白的字符串

Asc(string)

返回一个integer,代表字符串中首字母的字符(ASCII)代码

Chr(charcode)

返回string,将字符代码(ASCII码)转换为字符

InStr([start,] string1, string2, [comp])

在字符串string1中查找字符串string2的位置

InstrRev(string1, string2, [start,] [comp])

在字符串string1中反向查找字符串string2的位置

String(x, string)

生成指定长度x个重复字符串

StrConv(string, conv)

字符串大小写转换和首字母转为大写(conv=1:大小;conv=2:小写;conv=3:首字母大写)

StrComp(string1, string2, [comp])

对两个字符串按指定方式进行比较(comp=0:二进制、comp=1:原文;返回值为-1:小于、0:等于、1:大于)

Replace(string, string1, string2, [start,] [len,] [comp,])

在字符串string中的string1替换位string2(start:开始位置;len:替换字符数;comp:替换方式)

注:函数中方括号“[]”中的参数可选

II、VBA日期和时间函数

函数

备注

Now()

返回计算机系统设置的日期和时间

Date()

返回当前系统日期

Time()

返回前系统时间

Timer()

返回一个Single数字,代表从午夜开始到现在经过的秒数

TimeSerial(hour, minute, second)

返回一个包含具有具体时、分、秒的时间

DateDiff(comp, date1, date1)

返回表示两个指定日期间的时间间隔数目(间隔参数comp=yyyy:年、comp=q:季、comp=m:月、comp=d:日、comp=w:周、comp=h:时、comp=n:分钟、comp=s:秒)

Second(time)

返回时间的秒数

Minute(time)

返回时间的分钟数

Hour(time)

返回时间的小时数

Day(date)

返回日期变量的日期

Month(date)

返回日期变量的月份

Year(date)

返回日期变量的年份

Weekday(date, [firstdayofweek])

返回某个日期是星期几(若设firstdayofweek=vbMonday,每周第一天为星期一)

III、VBA数学函数

函数

备注

Abs(x)

返回x绝对值

Int(x)

对x取整

Sgn(x)

根据x的值返回-1(x小于零)、0(x等于零)、1(x大于零)

Fix(x)

返回x的整数部分

Hex(x)

返回x的16进制字符

Oct(x)

返回x的8进制数值

Round(x, d)

按指定位数d四舍五入数值x

Rnd([integer])

返回(0,10)随机数

Sqr(x)

返回x平方根

Exp(x)

返回自然数e的x幂

Log(x)

返回以自然数e为底x的对数

Sin(r)

正弦函数

Cos(r)

余弦函数

Tan(r)

正切函数

Atn(r)

反正切函数

注:三角函数的参数 r 为弧度

IV、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

V、VBA信息函数

函数

备注

IsArray(var)

判断变量var是否为数组

IsDate(var)

判断变量var是否为日期型

IsEmpty(var)

判断变量var是否初始化

IsError(var)

判断表达式是否出错

IsMissing(var)

判断(函数)参数是否传递给过程(调用函数时是否引用了某个参数)

IsNull(var)

是否不包含有效数据(Null)

IsNumeric(var)

判断变量var是否是数值型

IsObject(var)

判断变量var是否是对象型

TypeName(var)

返回变量名称

varType(var)

返回变量类型系统定义值(如5 - double)

2、常用函数运用实例

I、字符串样例代码

Dim str As String
Dim str1 As String
Dim str2 As String
str = "lei wang"
str1 = "KEI WANG"
MsgBox "Len = " & Len(str)                       '显示为8
MsgBox "Left = " & Left(str, 3)                  '显示为lei
MsgBox "Right = " & Right(str, 4)                '显示为wang
MsgBox "Mid = " & Mid(str, 5, 4)                 '显示为wang
MsgBox "UCase = " & UCase(str)                   '转为大写,显示为KEI WANG
MsgBox "LCase = " & LCase(str1)                  '转为小写,显示为lei wang
MsgBox "Asc = " & Asc("A")                       '显示为ASCII码65
MsgBox "Chr = " & Chr(65)                        '显示为字符A
str2 = "Hello excel 2007 VBA"
MsgBox "InStr = " & InStr(str2, "e")             '显示为位置2
MsgBox "InStr = " & InStr(3, str2, "e")          '显示为位置7
MsgBox "InStrRev = " & InStrRev(str2, "e")       '显示为位置10
MsgBox "InStrRev = " & InStrRev(str2, "e", 8)    '显示为位置7
str1 = "ABCD"
str2 = "abcd"
MsgBox "StrComp = " & StrComp(str1, str2, 1)     '显示为0
MsgBox "StrComp = " & StrComp(str1, str2, 0)     '显示为-1
MsgBox "StrComp = " & StrComp(str1, str2)        '显示为-1
str = "lei wang"
str1 = "KEI WANG"
MsgBox "StrConv = " & StrConv(str1, 1)           '显示为lei wang
MsgBox "StrConv = " & StrConv(str, 2)            '显示为KEI WANG
MsgBox "StrConv = " & StrConv(str, 3)            '显示为Lei Wang
MsgBox Replace(str2, "e", "E")                   '显示为HEllo ExcEl 2007 VBA
MsgBox Replace(str2, "e", "E", 8, 5)             '显示为xEel 2007 VBA

II、日期和时间函数样例代码

MsgBox Now()   '显示日期和时间(yyyy-mm-dd hh-mm-ss)
MsgBox Date    '显示日期(yyyy-mm-dd)
MsgBox Time()  '显示时间(yyyy-mm-dd hh-mm-ss)
MsgBox Timer()
MsgBox TimeSerial(15, 1, 10)
MsgBox DateDiff("w", "2018-10-09", Now())
MsgBox Second(Time())
MsgBox Minute(Time())
MsgBox Hour(Time())
MsgBox Day(Date)
MsgBox Month(Date)
MsgBox Year(Date)
MsgBox Weekday(Date, vbMonday)

III、数学函数样例代码

Dim x As Double
x = 4 * Atn(1)          '计算圆周率
MsgBox Application.WorksheetFunction.Pi()
MsgBox Sgn(12)          '返回1
MsgBox Hex(12)
MsgBox Oct(12)
MsgBox Round(12.37, 1)  '返回12.4
MsgBox Rnd(2)
MsgBox exp(1.2)
MsgBox Log(exp(1))      '返回1
MsgBox Sin(x / 2)       '返回1 

IV、Like运算符使用方法

可以使用Like运算符来比较两个字符串,其语法格式如下:

语法:
    result = string Like pattern
         string: 字符串表达式
         pattern:字符串表达式,可用通配符、字符表和字符范围   

匹配模式pattern如下表:

pattern中的字符

匹配string中的字符

?

任何单一字符

*

零个或多个字符

#

任何一个数字(0∼∼∼∼9)

[charlist]

charlist中的任何单一字符

[!charlist]

不在charlist中的任何单一字符

Like运算符使用方法样例代码:

Dim str As String
str = "Application.RandBetween2345"
MsgBox "aBBBa" Like "a*a" '显示True
MsgBox "RandBetween" Like "*e?n"    '显示True
MsgBox 123 Like "??#" '显示True
MsgBox "A" Like "[a-z]"             '显示False
MsgBox "A" Like "[A-A]" '显示True
MsgBox "A" Like "[!A-A]"            '显示False
MsgBox "" Like "[]" '显示True
MsgBox " " Like "[]"                '显示False 

V、Format函数使用方法

Excel VBA中Format函数的用法是根据格式表达式中的指令来格式化,其语法格式如下:

语法:
    Format(expression, [format,] [firstdayofweek,] [firstweekofyear])
         expression:必要参数,任何有效的表达式
         format:可选参数,有效的命名表达式或用户自定义格式表达式
         firstdayofweek:可选参数,常数,表示一星期的第一天。 
         firstweekofyear:可选参数,常数,表示一年的第一周。  

firstdayofweek参数设置如下表:

VBA参数

取值

备注

VbSunday

1

星期日(缺省)

vbMonday

2

星期一

vbTuesday

3

星期二

vbWednesday

4

星期三

vbThursday

5

星期四

vbFriday

6

星期五

vbSaturday

7

星期六

firstweekofyear参数有下面设置:

VBA参数

取值

备注

vbFirstJan

1

从包含一月一日的那一周开始(缺省)

vbFirstFourDays

2

从本年第一周开始,而此周至少有四天在本年中

VbFirstFullWeek

3

从本年第一周开始,而此周完全在本年中

Format函数使用方法样例代码:

Dim MyTime, MyDate, MyStr
MyTime = #5:04:23 PM#
MyDate = #1/27/1993#
'以系统设置的长时间格式返回当前系统时间
MyStr = Format(Time, "Long Time")
'以系统设置的长日期格式返回当前系统日期
MyStr = Format(Date, "Long Date")
MyStr = Format(MyTime, "h:m:s")            '返回 "17:4:23"
MyStr = Format(MyTime, "hh:mm:ss AMPM")    '返回 "05:04:23 PM"
MyStr = Format(MyDate, "dddd, mmm d yyyy") '返回 "Wednesday, Jan 27 1993"
'如果没有指定格式,则返回字符串。
MyStr = Format(23)                         '返回 "23"
'用户自定义的格式。
MyStr = Format(5459.4, "##,##0。00")       '返回 "5,459.40"
MyStr = Format(334.9, "###0.00")           '返回 "334.90"
MyStr = Format(5, "0.00%")                 '返回 "500.00%"
MyStr = Format("HELLO", "<")               '返回 "hello"
MyStr = Format("This is it", ">")          '返回 "THIS IS IT"

VBA可以通过Application对象等调用一些EXCEL前台函数,但在数据量较大时会降低数据数理速度,使用VBA函数数理数组数据会大大提高数据处理效率。