Excel精英培训网

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

[已解决]这个iif怎么不好用?

[复制链接]
发表于 2012-9-19 23:20 | 显示全部楼层 |阅读模式
  1. Sub b() 'iif的用法
  2. For ib = 1 To 26
  3. iif (range("c" & ib) < 60, range("e" & ib)="不及格", range("e" & ib)="及格")
  4. Next ib
  5. End Sub

  6. Sub c() ' if的用法
  7. For ia = 1 To 26
  8. If Range("c" & ia) < 60 Then
  9. Range("e" & ia) = "不及格"
  10. Else
  11. Range("e" & ia) = "及格"
  12. End If
  13. Next ia
  14. End Sub
复制代码
想实现同样的功能,iif会说语法错误,错在哪?
最佳答案
2012-9-19 23:40
iif是一个函数,而非一个语句。

系统函数和自定义函数的用法都是一样的。
如果将函数作为独立语句使用,那么函数的参数不能使用括号括起来。
所以你的代码中你必须去掉 iif(判断条件,表达式1,表达式2) 这个语句的括号。

但是,iif语句的精髓在于会根据条件得到一个返回值,你这样独立来使用,这里的两个表达式,相当于两个逻辑表达式,也就是判断E列的值是否等于“不及格”或者“及格”。最终结果是得到False或者True。
所以你的代码最终就相当于:
Sub b() 'iif的用法
For ib = 1 To 26
    False(Or True)
Next ib
End Sub
这样的代码毫无意义!
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2012-9-19 23:33 | 显示全部楼层
刚才又想了一下,改成蓝色字体的写法,就能如愿。可这是什么规则?难道iif必须做为类似于msgbox的参数,或者赋值给别人才能用?

Sub b() 'iif的用法

For ib = 1 To 26

iif (range("c" & ib) < 60, range("e" & ib)="不及格", range("e" & ib)="及格")  '语法错误
Range("e" & ib) = IIf(Range("c" & ib) < 60, "不及格", "及格")   '可以运行
Next ib

End Sub
回复

使用道具 举报

发表于 2012-9-19 23:40 | 显示全部楼层    本楼为最佳答案   
iif是一个函数,而非一个语句。

系统函数和自定义函数的用法都是一样的。
如果将函数作为独立语句使用,那么函数的参数不能使用括号括起来。
所以你的代码中你必须去掉 iif(判断条件,表达式1,表达式2) 这个语句的括号。

但是,iif语句的精髓在于会根据条件得到一个返回值,你这样独立来使用,这里的两个表达式,相当于两个逻辑表达式,也就是判断E列的值是否等于“不及格”或者“及格”。最终结果是得到False或者True。
所以你的代码最终就相当于:
Sub b() 'iif的用法
For ib = 1 To 26
    False(Or True)
Next ib
End Sub
这样的代码毫无意义!
回复

使用道具 举报

发表于 2012-9-19 23:42 | 显示全部楼层
silenthunter 发表于 2012-9-19 23:33
刚才又想了一下,改成蓝色字体的写法,就能如愿。可这是什么规则?难道iif必须做为类似于msgbox的参数,或者 ...

的确如你所言,他必须像Msgbox函数一样来使用。使用的注意事项都完全一样。
所以你蓝色字体部分的代码才是iif最有效的用法!
回复

使用道具 举报

 楼主| 发表于 2012-9-20 08:17 | 显示全部楼层
FF7 发表于 2012-9-19 23:42
的确如你所言,他必须像Msgbox函数一样来使用。使用的注意事项都完全一样。
所以你蓝色字体部分的代码才 ...

谢谢,看来IIF虽然是判断语句之一,但它的思路却和if then不一样啊。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 11:30 , Processed in 0.250682 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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