Menu

Excel CHOOSE 函数:按序号选取值

=CHOOSE(B2,"Low","Medium","High") 在 B2 为 1 时返回 Low,为 2 时返回 Medium,为 3 时返回 High。把数字映射成名称、选择要求和的区域、替代嵌套 IF,以及用 CHOOSECOLS 选取列。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=CHOOSE(B2,"Low","Medium","High") 返回 B2 所指定位置上的值:1 返回 Low,2 返回 Medium,3 返回 High。第一个参数是序号,后面的所有参数是供选择的列表。

把优先级数字转换成标签
C2
ABC
1TaskPriorityLabel
2Fix login3High
3Update docs1Low
4Review PR2Medium
5Clean inbox1Low
6Ship release3High
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

把某个优先级改成 2,它的标签就变成 Medium。优先级为 4 会得到 #VALUE!,因为列表只有三个值;0 也一样。

CHOOSE 语法

=CHOOSE(index_num, value1, [value2], ...)
  • index_num:从 1 到值的个数(最多 254)的数字。小数会被截成整数,所以 2.9 选的是第 2 个值。
  • value1, value2, ...:要返回的内容。可以是数字、文本、单元格引用、公式或整个区域。

根据日期得到星期名称

WEEKDAY 返回从 1(星期日)到 7(星期六)的数字,正好是 CHOOSE 需要的序号。

日期是星期几
B2
AB
1DateDay
22026-03-02Mon
32026-03-06Fri
42026-03-07Sat
52026-03-11Wed
62026-03-15Sun
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

2026-03-02 是星期一,所以 B2 显示 Mon。修改日期,名称会跟着变。=TEXT(A2,"ddd") 不用列表也能给出同样的简写名称(weekday 页面有介绍)。如果你想用自己的标签(例如“工作日”和“周末”),或者让一周从其他某天开始,就该用 CHOOSE。

用 CHOOSE 代替嵌套 IF

当条件是位置序号时,CHOOSE 可以替代一串 IF。下面两个公式都返回 B1 中方案编号对应的增长率。

选择一个方案
B2
AB
1Scenario (1 to 3)2
2Growth (CHOOSE)5%
3Growth (nested IF)5%
4
5Sales this year120,000
6Sales next year126,000
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

方案 2 给出 5%,明年的销售额为 126,000。在 B1 中选 3 就是 8%。无论增加多少个方案,CHOOSE 版本始终只有一层;IF 版本每加一个方案就多一层嵌套。当条件是文本标签时,请使用 SWITCH;对于 0 到 999 这样的数值区间,请使用查找表。

选择整个区域

值也可以是区域,所以 CHOOSE 能决定 SUM 或 AVERAGE 读取哪一列。假设 1 月到 3 月的销售额分别在 B2:B5、C2:C5 和 D2:D5 中,F2 中是月份编号:

=SUM(CHOOSE(F2, B2:B5, C2:C5, D2:D5))

F2 为 3 时,这个公式对 D2:D5(3 月那一列)求和。列数一多,逐个列出区域就会很长,而 INDEX 用一个区域就能做到同样的事:=SUM(INDEX(B2:D5,0,F2)),其中 0 表示“所有行”(INDEX 页面有详细说明)。当区域不相邻,或位于不同工作表时,CHOOSE 依然很有用。

CHOOSECOLS 和 CHOOSEROWS

Microsoft 365 和 Excel 2024 新增了两个函数,可以按序号从区域中选出整列或整行,并把结果溢出到相邻单元格。负数表示从末尾倒数。

只保留名称和库存
F1
ABCDEFG
1ProductCategoryPriceStockProductStock
2AppleFruit$1.2040Apple40
3PearFruit$1.5025Pear25
4CarrotVegetable$0.8060Carrot60
5BreadBakery$2.4015Bread15
6MilkDairy$1.1030Milk30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F1 溢出 Product 和 Stock 两列,包括标题。序号可以按任意顺序排列:=CHOOSECOLS(A1:D6,4,1) 把 Stock 放在 Product 前面。=CHOOSEROWS(A1:D6,1,-1) 返回标题行和最后一行。

练习:按配送方式计算运费

配送方式
C2
ABC
1OrderMethodCost
210012
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 方式 1 运费为 5,方式 2 为 9,方式 3 为 15。在 C2 中用 CHOOSE 返回 B2 中方式编号对应的运费。

常见问题

Excel 中 CHOOSE 函数有什么作用?

它根据一个数字从一组值中返回其中一个:=CHOOSE(2,"Red","Green","Blue") 返回 Green。第一个参数决定位置,后面的值可以是数字、文本、单元格引用或区域。

CHOOSE 为什么返回 #VALUE!?

序号小于 1 或大于值的个数。=CHOOSE(4,"Red","Green","Blue") 只有三个值可选。小数序号会被截成整数,所以 2.7 选的是第二个值。

什么时候该用 CHOOSE 而不是 IF?

当条件是 1、2、3 这样的位置序号时。=CHOOSE(B2,5,9,15) 比 =IF(B2=1,5,IF(B2=2,9,15)) 更短,也更好读。如果条件不是连续的数字,请使用 IFS、SWITCH 或查找表。

Excel 中的 CHOOSECOLS 是什么?

一个较新的函数,返回区域中指定的列:=CHOOSECOLS(A1:D5,1,4) 返回第一列和第四列。CHOOSEROWS 对行做同样的事,负数表示从末尾倒数。两者都需要 Microsoft 365 或 Excel 2024。

Coddy 编程语言插图

和 Coddy 一起学编程

开始