查看: 20|回复: 0

Excel中特别有用的不常用函数之Choose函数

[复制链接]

32万

主题

32万

帖子

96万

积分

论坛元老

Rank: 8Rank: 8

积分
961966
发表于 2020-12-1 00:46:46 | 显示全部楼层 |阅读模式


今天给大家介绍一个不太常用但是很有用的函数:CHOOSE。

CHOOSE函数的基本用法Excel中,对choose函数的解释是:
根据给定的索引值,从参数串中选出相应值或操作,

Choose函数的语法是这样的:
CHOOSE(index_num, value1, [value2], ...)
其中
index_num是索引值,
value1, value2, ...是参数串(至少需要有一个参数,最多可以有254个参数)。
下面是一些例子:

如果索引值(第一个参数)超过了后面参数串中参数的个数,就返回错误值。如果索引值小于等于0,也返回错误值。
这个函数还是挺简单的。
如果还是不明白,其实可以把这个函数理解成为IF函数,例如,上图中的CHOOSE函数可以写成下面的IF公式:
=IF(A1=1,'A',IF(A1=2,'B','C'))
CHOOSE函数很少自己单独使用,多数都是跟其他函数配合使用。例如,跟RANDBETWEEN函数配合使用,可以生成一个随机的字母:
=CHOOSE(RANDBETWEEN(1,5),'A','B','C','D','E')


CHOOSE函数的高级用法举例CHOOSE函数用的最多的地方是跟VLOOKUP函数配合使用进行所谓“反向查找”:

例如,我们要根据输入的名称(G2)在B3:C7区域中查找相应的ID。直接用Vlookup函数不行,所以我们通过公式:
CHOOSE({1,2},C3:C7,B3:B7)
将两个区域进行了对调,结果区域变成了C列在前,B列在后,就可以使用VLOOKUP函数了。
需要注意的是,对调后,由于ID列放到了后面,所以VLOOKUP函数的第三个参数需要写2(即返回第2列)
CHOOSE函数的另外一个用法是简化复杂的嵌套的IF。
我们知道,IF函数一旦嵌套过多,就比较难以理解,还容易出错,比如,下面这个公式:
=IF(A1=1,'A',IF(A1=2,'B',IF(A1=3,'C',IF(A1=4,'D','E'))))
我们可以以一个简单的CHOOSE公式代替:
=CHOOSE(A1,'A','B','C','D','E')
这个公式就非常简单明了。不过有一个问题,只有当第一个参数A1是1,2,3,...这样的自然数时才能这样写。如果是下面的IF公式:
=IF(A1>=90,'A',IF(A1>=80,'B',IF(A1>=70,'C',IF(A1>=60,'D','E'))))
就不能使用刚才的CHOOSE公式来代替。这时,我们需要用MATCH函数结合CHOOSE函数来使用:
=CHOOSE(MATCH(A1,{0,60,70,80,90},1),'E','D','C','B','A')
这里,我们使用MATCH公式:
MATCH(A1,{0,60,70,80,90},1)
根据A1返回在级别中的位置,这个位置是1,2,3,...的自然数,可以作为CHOOSE的第一个参数。


CHOOSE函数与控件结合制作交互式表格
我们可以使用CHOOSE函数计算如下的交互式表格:

这个报表的制作也很简单,其中主要是CHOOSE函数在发挥作用。下面简要介绍一下制作方法。
首先,选中一个空白单元格作为CHOOSE的第一个参数,在其中输入1,我们这里选的是G1:

然后将表格中所有的“销售额”用公式代替:

我们使用CHOOSE函数:=CHOOSE($G$1,'销售额','销售量')来根据G1的值动态选择是销售额还是销售量
再然后将表格中销售额的公式修改为使用CHOOSE函数:

这里的公式为:=SUMIFS(CHOOSE($G$1,$Q$3:$Q$18,$R$3:$R$18),$O$3:$O$18,$B4,$P$3:$P$18,C$2)
其中求和区域是一个CHOOSE公式:
CHOOSE($G$1,$Q$3:$Q$18,$R$3:$R$18)
这个公式根据G1中的值返回是用哪一个区域进行求和。
最后,添加两个选项按钮:

将选项按钮链接单元格设为G1:

大功告成!

总结和提示

CHOOSE函数还是很有用的一个函数。在使用时需要注意一点,那就是它是从后面的参数串中选择,这个参数串必须手动写出来,象:
=CHOOSE(A1,'A','B','C','D','E')
如果你想偷懒,把A,B,C,D,E等值输入到单元格G1:G5区域,然后使用公式:
=CHOOSE(A1,G1:G5)
这个公式返回的是一个区域G1:G5,而不是你想要的答案。
另外,我们说CHOOSE的原理跟IF相似,复杂的IF嵌套可以改成CHOOSE,或者CHOOSE+MATCH,但是这里有一个问题,那就是如果第一个参数的值超过了后面参数串的个数,就会返回错误值,而在原来的IF公式中(如果设计的好的话)是不会有这个问题的。所以,如果你不能限制第一个参数值的范围,那么就需要用IFERROR来进行处理。
END
回复

使用道具 举报

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

本版积分规则

QQ| Archiver|手机版|小黑屋| 师哈哈 |网站地图

Copyright © 2019-2025 Www.biiyy.Com.   All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备14049462号-3 )