Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7303|回复: 3

IF THEN语句和SELECT语句的区别和用处

[复制链接]
发表于 2012-4-21 05:43 | 显示全部楼层 |阅读模式
作为条件判断,经常会使用到IF THEN语句和SELECT语句,通过对这两种语句的使用,我摸索出一点心得和大家分享。
IF THEN语句的优势在于可以用逻辑运算符实现多条件判断,而SELECT 只能对CASE后跟的值进行判断,只能实现单条件判断。

Sub 判断()


If WorksheetFunction.CountBlank(Range("A2:C2")) = 0 And (Range("C2") > Range("A2") And Range  _("b2")  Range("A2") Xor Range("C2") > 80) Then
Range("d2").Value = "符合要求"
Else
Range("d2").Value = "不符合要求"
End If

End Sub

复制代码
上面的一个过程比较适合用IF语句来判断,因为这是多条件判断,而且只有一次选择。

Sub 判断成绩_select()

If IsEmpty(Range("a22")) Then

Range("b22").Value = ""

Exit Sub

ElseIf IsNumeric(Range("A22")) And Range("a22") >= 0 Then

Select Case Range("a22").Value

Case Is > 90
Range("b22") = "优秀"
Case Is > 70
Range("b22") = "良好"
Case Is >= 60
Range("b22") = "及格"
Case Is < 60
Range("b22") = "不及格"
End Select

Else

Range("b22") = "分数错误"

End If

End Sub


上面的例子是对成绩等级的判断,对同一个值多等级判断,如果用IF语句将会变得复杂,请看下面的IF判断:

Sub 判断成绩_if()

If Range("a22") > 90 Then
Range("b22") = "优秀"
ElseIf Range("a22") > 70 Then
Range("b22") = "良好"
ElseIf Range("a22") >= 60 Then
Range("b22") = "及格"
ElseIf 0 < Range("a22") < 60 Then
Range("b22") = "不及格"
End If

End Sub


这是两个语句在适合应用场合的区别。
在运算速度上来看,SELECT只需对条件判断一次,IF THEN要对每个条件进行判断,速度就慢了,从逻辑结构上看,个人认为单条几多层次选择上,能用SELECT,就不用IF THEN ELSEIF的语句。另外可以考虑用CHOOSE代替可能会更简单。  

发表于 2012-4-21 06:06 | 显示全部楼层
回复

使用道具 举报

发表于 2013-1-1 20:03 | 显示全部楼层
回复

使用道具 举报

发表于 2019-12-11 09:32 | 显示全部楼层
不错不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 19:56 , Processed in 0.304222 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表