Table of contents
该教程解释了CHOOSE函数的语法和基本用途,并提供了几个非简单的例子,说明如何在Excel中使用CHOOSE公式。
CHOOSE是Excel函数中的一种,它本身可能看起来没什么用,但与其他函数结合起来就会有很多令人敬畏的好处。 在最基本的层面上,你使用CHOOSE函数从一个列表中通过指定该值的位置获得一个值。 在本教程中,你会发现几个高级用途,当然值得探索。
Excel的CHOOSE函数--语法和基本用途
Excel中的CHOOSE函数被设计为根据指定的位置从列表中返回一个值。
该功能在Excel 365、Excel 2019、Excel 2016、Excel 2013、Excel 2010和Excel 2007中可用。
CHOOSE函数的语法如下。
CHOOSE(index_num, value1, [value2], ...)在哪里?
指数_编号 (required) - 要返回的值的位置,可以是1到254之间的任何数字,也可以是一个单元格引用,或者是其他公式。
价值1,价值2,...。 - 最多可以选择254个值的列表。 Value1是必须的,其他值是可选的。 这些值可以是数字、文本值、单元格引用、公式或定义名称。
下面是一个最简单形式的CHOOSE公式的例子。
=CHOOSE(3, "Mike", "Sally", "Amy", "Neal")
该公式返回 "Amy",因为 index_num 是3,"Amy "是列表中的第三个值。
Excel中的CHOOSE函数--3点要记住!
CHOOSE是一个非常简单的函数,你在工作表中实现它几乎不会遇到任何困难。 如果你的CHOOSE公式返回的结果是意外的或不是你要的结果,可能是因为以下原因。
- 可供选择的价值数量限制在254个。
- 如果 index_num 小于1或大于列表中的值的数量,将返回#VALUE!错误。
- 如果 index_num 参数是一个分数,它被截断为最低的整数。
如何在Excel中使用CHOOSE函数--公式实例
下面的例子显示了CHOOSE如何扩展其他Excel函数的功能,并为一些常见的任务提供替代解决方案,甚至是那些被许多人认为不可行的任务。
Excel中的 "选择"(CHOOSE)代替了嵌套的 "IF"。
在Excel中最常见的任务之一是根据指定的条件返回不同的值。 在大多数情况下,这可以通过使用经典的嵌套IF语句来完成。 但CHOOSE函数可以成为一个快速和易于理解的替代方案。
例1.根据条件返回不同的值
假设你有一列学生的分数,你想根据以下条件给分数贴标签。
结果 | 分数 |
贫穷 | 0 - 50 |
令人满意 | 51 - 100 |
良好 | 101 - 150 |
优秀 | 超过151 |
一种方法是将几个IF公式相互嵌套在一起。
=IF(B2>=151, "优秀", IF(B2>=101, "良好", IF(B2>=51, "满意", "差"))
另一种方法是选择一个与条件相对应的标签。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101) + (B2>=151), "差", "满意", "好", "优秀")
这个公式如何运作。
在 index_num 例如,B2单元格中的值符合前三个条件,所以我们得到这个中间结果。
=CHOOSE(TRUE + TRUE + TRUE + FALSE, "差", "满意", "好", "优秀")
鉴于在大多数Excel公式中,TRUE等于1,FALSE等于0,我们的公式经历了这种转变。
=CHOOSE(1 + 1 + 1 + 0, "差", "满意", "好", "优秀")
进行加法运算后,我们有。
=CHOOSE(3, "差", "满意", "好", "优秀")
结果,列表中的第3个值被返回,即 "好"。
提示。
- 为了使公式更加灵活,你可以使用单元格引用而不是硬编码的标签,例如。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101) + (B2>=151), $E$1, $E$2, $E$3, $E$4)
- 如果你的条件中没有一个是 "真",那么 index_num 为了避免这种情况,只需将CHOOSE包在IFERROR函数中,如图所示。
=IFERROR(CHOOSE((B2>0)+(B2>=51)+(B2>=101)+(B2>=151), "差", "满意", "好", "优"), "")
例2.根据条件进行不同的计算
以类似的方式,你可以使用Excel的CHOOSE函数来执行一系列可能的计算/公式中的一个计算,而不需要在多个IF语句中相互嵌套。
作为一个例子,让我们根据每个卖家的销售额来计算他们的佣金。
委员会 | 销售 |
5% | 0美元至50美元 |
7% | 51美元至100美元 |
10% | 超过101美元 |
有了B2中的销售金额,该公式的形状如下。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101), B2*5%, B2*7%, B2*10%)
不要在公式中硬编码百分比,你可以参考参考表格中的相应单元格,如果有的话。 只要记住使用$符号固定参考。
=CHOOSE((B2>0) + (B2>=51) + (B2>=101), B2*$E$2, B2*$E$3, B2*$E$4)
用Excel的CHOOSE公式生成随机数据
正如你可能知道的那样,Microsoft Excel有一个特殊的函数来生成你指定的底部和顶部数字之间的随机整数--RANDBETWEEN函数。 将其置于 index_num 参数的CHOOSE,你的公式将产生几乎任何你想要的随机数据。
例如,这个公式可以产生一个随机考试结果的列表。
=CHOOSE(RANDBETWEEN(1,4), "差", "满意", "好", "优秀")
该公式的逻辑很明显:RANDBETWEEN产生1到4的随机数,CHOOSE从预定义的四个值的列表中返回一个相应的值。
注意:RANDBETWEEN是一个不稳定的函数,它随着你对工作表的每一次改变而重新计算。 因此,你的随机值列表也会改变。 为了防止这种情况发生,你可以通过使用以下方法将公式和它们的值替换掉 粘贴专用 功能。
选择公式来做一个左边的Vlookup
如果你曾经在Excel中执行过垂直查找,你就知道VLOOKUP函数只能在最左边的列中查找。 在需要返回查找列左边的值的情况下,你可以使用INDEX/MATCH组合,或者通过将CHOOSE函数嵌套到VLOOKUP中来欺骗它。 下面是方法。
假设你有一个分数列表在A列,学生姓名在B列,你想检索一个特定学生的分数。 由于返回列在查找列的左边,普通的Vlookup公式会返回#N/A的错误。
为了解决这个问题,让CHOOSE函数交换列的位置,告诉Excel列1是B,列2是A。
=choose({1,2}, b2:b5, a2:a5)
因为我们提供了一个{1,2}的数组在 index_num 参数,CHOOSE函数接受范围在 价值 参数(通常情况下,它不会)。
现在,将上述公式嵌入到 表_数组 VLOOKUP的参数。
=vlookup(e1,choice({1,2}, b2:b5, a2:a5),2,false)
然后就好了--向左的查找被顺利进行了。
选择配方,在下一个工作日返回
如果你不确定明天是应该去上班还是可以呆在家里享受当之无愧的周末,Excel的CHOOSE函数可以找出下一个工作日是什么时候。
假设你的工作日是周一到周五,公式如下。
=today()+choose(weekday(today()),1,1,1,1,3,2)
乍一看很棘手,仔细一看,这个公式的逻辑很容易理解。
WEEKDAY(TODAY())返回一个与今天的日期相对应的序列号,范围从1(星期日)到7(星期六)。 这个数字归入 index_num 我们的CHOOSE公式的参数。
价值1 - 价值7 (1,1,1,1,3,2)决定在当前日期的基础上增加多少天。 如果今天是周日-周四(index_num 1 - 5),你加1来返回第二天。 如果今天是周五(index_num 6),你加3来返回下周一。 如果今天是周六(index_num 7),你加2来再次返回下周一。 没错,就是这么简单。)
选择公式,从日期中返回一个自定义的日/月名称
当你想获得标准格式的日期名称时,如全称(周一、周二等)或简称(周一、周二等),你可以使用TEXT函数,如本例所解释的:从Excel中的日期获得星期。
如果你想以自定义的格式返回一周中的某一天或某一月的名称,请按以下方式使用CHOOSE函数。
为了得到一个星期中的一天。
=CHOOSE(WEEKDAY(A2),"Su","Mo","Tu","We","Th","Fr","Sa")
为了得到一个月的时间。
=CHOOSE(MONTH(A2), "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
其中A2是包含原始日期的单元格。
我希望这个教程能给你一些想法,让你知道如何在Excel中使用CHOOSE函数来增强你的数据模型。 我感谢你的阅读,并希望下周在我们的博客上见到你
下载实践工作手册
Excel选择函数的例子