设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 5181|回复: 1

[模块/函数] 【技巧】Access中iif switch和choose的区别(Excel类同)

[复制链接]

点击这里给我发消息

发表于 2015-5-2 17:14:17 | 显示全部楼层 |阅读模式
Access中iif switch和choose的区别(Excel类同)
在Access及Excel中均可使用iif switch和choose三个函数做选择使用,但3个函数是有区别的
iif只有2个选择
而switch和choose都是做多选择用的函数,不同点在switch的参数更灵活一些


例如
现在需要填一份单据,其中美元用$,人民币用 ¥ ,英磅用£封闭小写
币种字段 填大写,符号 填小写.其中 货币符号根据币种字段自动填写
switch用VBA表达式如下
[货币符号]=switch([币种字段]="美元","$",[币种字段]="人民币","¥" ,[币种字段]="英磅","£")

而choose,则只能让你在[A1]单元格中填1,2,3分别表示美元,人民币,英磅三种货币
[货币符号]=choose([币种字段],"$","¥","£")

遇到例外选择则两个函数都不好用了.需要用iif,或Select Case,因此这两个函数是不常用函数.




顺序控制,选择控制,循环控制
【1】IIf函数: 调用格式:IIf(条件式,表达式1,表达式2) 该函数是根据“条件式”的值来决定函数返回值。“条件值”为真,函数返回“表达式1”的值,否则返回“表达式2”的值。

【2】Switch函数: 调用格式:Switch(条件式1,表达式1[,条件式2,表达式2……[,条件式n,表达式n]]) 该函数是分别根据“条件式1”、“条件式2”直至“条件式n”的值来决定函数返回值。条件式是由左至右进行计算判断的,而表达式则会在第一个相关的条件式为True时作为函数的返回值返回。如果其中有部分不成对,则会产生一个运行错误。

【3】Choose函数: 调用格式:Choose(索引式,选项11,选项2,...[,选项n]]) 该函数式根据“索引式”的值来返回选项列表中的某个值。“索引式”值为1,函数返回“选项1”值;“索引式”值为2,函数返回“选项2”值:依次类推。这里,只有在“索引式”的值界于1和可选项的项目数之间,函数才返回其后的选项值;当“索引式”的值小于1或大于列出的选择项数目时,函数返回无效值(Null)。




官方解释


从参数列表中选择并返回一个值。
语法
Choose(index, choice-1[, choice-2, ... [, choice-n]])
Choose 函数的语法具有以下几个部分:
部分描述
index必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1 和可选择的项目数之间。
choice必要参数,Variant 表达式,包含可选择项目的其中之一。


说明
Choose 会根据 index 的值来返回选择项列表中的某个值。如果 index 是 1,则 Choose 会返回列表中的第 1 个选择项。如果 index 是 2,则会返回列表中的第 2 个选择项,以此类推。
可以使用 Choose 来查阅一个列表中的项目。例如,如果 index 所指定的值为 3,而 choice-1 = "one"、choice-2 = "two"、且 choice-3 = "three",那么 Choose 将返回 "three"。当 index 代表一选项组中的值时,则这项功能将会特别有用。
即使它只返回一个选项值,Choose 仍然会计算列表中的每个选择项。所以应该注意到这项副作用。例如,当在每个选择项表达式中使用了 MsgBox 函数作为其中的一部分时,每计算一个选择项,就会显示一次消息框。
index小于 1 或大于列出的选择项数目时,Choose 函数返回 Null。
如果 index 不是整数,则会先四舍五入为与其最接近的整数。


计算一组表达式列表的值,然后返回与表达式列表中最先为 True 的表达式所相关的 Variant 数值或表达式。
语法
Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]])
Switch 函数的语法具有以下几个部分:
部分描述
expr必要参数。要加以计算的 Variant 表达式。
value必要参数。如果相关的表达式为 True,则返回此部分的数值或表达式。


说明
Switch 函数的参数列表由多对表达式和数值组成。表达式是由左至右加以计算的,而数值则会在第一个相关的表达式为 True 时返回。如果其中有部分不成对,则会产生一个运行时错误。如果 expr-1TrueSwitch 返回 value-1,如果 expr-1False,但 expr-2True,则 Switch 返回 value-2,以此类推。
Switch 会返回一个 Null值,如果:
  • 没有一个表达式为 True
  • 第一个为 True 的表达式,其相对应的值为 Null
虽然它只返回其中的一个值,但是 Switch 会计算所有的表达式。因此应该注意到所产生的副作用。例如,只要其中一个表达式导致被零除错误,就会发生错误。





点击这里给我发消息

发表于 2015-5-2 17:28:48 | 显示全部楼层
学习要在不断的不明白中去探索。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-17 05:39 , Processed in 0.080218 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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