=CHOOSE(B2,"Low","Medium","High") 返回 B2 所指定位置上的值:1 返回 Low,2 返回 Medium,3 返回 High。第一个参数是序号,后面的所有参数是供选择的列表。
| A | B | C | |
|---|---|---|---|
| 1 | Task | Priority | Label |
| 2 | Fix login | 3 | High |
| 3 | Update docs | 1 | Low |
| 4 | Review PR | 2 | Medium |
| 5 | Clean inbox | 1 | Low |
| 6 | Ship release | 3 | High |
把某个优先级改成 2,它的标签就变成 Medium。优先级为 4 会得到 #VALUE!,因为列表只有三个值;0 也一样。
CHOOSE 语法
=CHOOSE(index_num, value1, [value2], ...)
index_num:从 1 到值的个数(最多 254)的数字。小数会被截成整数,所以 2.9 选的是第 2 个值。value1, value2, ...:要返回的内容。可以是数字、文本、单元格引用、公式或整个区域。
根据日期得到星期名称
WEEKDAY 返回从 1(星期日)到 7(星期六)的数字,正好是 CHOOSE 需要的序号。
| A | B | |
|---|---|---|
| 1 | Date | Day |
| 2 | 2026-03-02 | Mon |
| 3 | 2026-03-06 | Fri |
| 4 | 2026-03-07 | Sat |
| 5 | 2026-03-11 | Wed |
| 6 | 2026-03-15 | Sun |
2026-03-02 是星期一,所以 B2 显示 Mon。修改日期,名称会跟着变。=TEXT(A2,"ddd") 不用列表也能给出同样的简写名称(weekday 页面有介绍)。如果你想用自己的标签(例如“工作日”和“周末”),或者让一周从其他某天开始,就该用 CHOOSE。
用 CHOOSE 代替嵌套 IF
当条件是位置序号时,CHOOSE 可以替代一串 IF。下面两个公式都返回 B1 中方案编号对应的增长率。
| A | B | |
|---|---|---|
| 1 | Scenario (1 to 3) | 2 |
| 2 | Growth (CHOOSE) | 5% |
| 3 | Growth (nested IF) | 5% |
| 4 | ||
| 5 | Sales this year | 120,000 |
| 6 | Sales next year | 126,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 新增了两个函数,可以按序号从区域中选出整列或整行,并把结果溢出到相邻单元格。负数表示从末尾倒数。
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Stock | Product | Stock | |
| 2 | Apple | Fruit | $1.20 | 40 | Apple | 40 | |
| 3 | Pear | Fruit | $1.50 | 25 | Pear | 25 | |
| 4 | Carrot | Vegetable | $0.80 | 60 | Carrot | 60 | |
| 5 | Bread | Bakery | $2.40 | 15 | Bread | 15 | |
| 6 | Milk | Dairy | $1.10 | 30 | Milk | 30 |
F1 溢出 Product 和 Stock 两列,包括标题。序号可以按任意顺序排列:=CHOOSECOLS(A1:D6,4,1) 把 Stock 放在 Product 前面。=CHOOSEROWS(A1:D6,1,-1) 返回标题行和最后一行。
练习:按配送方式计算运费
| A | B | C | |
|---|---|---|---|
| 1 | Order | Method | Cost |
| 2 | 1001 | 2 |
轮到你了: 方式 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。