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-1 为 True 则 Switch 返回 value-1,如果 expr-1 为 False,但 expr-2 为 True,则 Switch 返回 value-2,以此类推。 Switch 会返回一个 Null值,如果: - 没有一个表达式为 True。
- 第一个为 True 的表达式,其相对应的值为 Null。
虽然它只返回其中的一个值,但是 Switch 会计算所有的表达式。因此应该注意到所产生的副作用。例如,只要其中一个表达式导致被零除错误,就会发生错误。
|