Excel 365 新函数 CHOOSECOLS / CHOOSEROWS 完全指南 — 精准摘取数组行列
这两个函数很多人听说过,但不知道它们能解决多少实际问题。今天系统讲清楚。
一、这两个函数是什么
CHOOSECOLS — 按列号精准提取数组中的某些列 CHOOSEROWS — 按行号精准提取数组中的某些行
=CHOOSECOLS(数组, 列号1, [列号2], ...)=CHOOSEROWS(数组, 行号1, [行号2], ...)
支持负数:负数 = 从数组末尾倒数计数(-1 = 最后一列/行,-2 = 倒数第二列/行)
二、适用版本
|
|
|
|---|---|
|
|
Excel 365
|
|
|
|
三、15 个实战场景
场景 1:提取特定列(CHOOSECOLS 基础)
从员工表中只提取「姓名」和「工资」两列(假设它们在第1列和第3列):
=CHOOSECOLS(A1:D100, 1, 3)
✅ 以前要靠 INDEX + COLUMN 构建复杂公式,现在一行搞定。
场景 2:提取最后 N 列(负数用法)
=CHOOSECOLS(A1:Z100, -1) ← 提取最后一列=CHOOSECOLS(A1:Z100, -3, -2, -1) ← 提取最后三列
负数从末尾倒数,用起来非常直观!
场景 3:奇偶列筛选
=CHOOSECOLS(A1:D100, 1, 3, 5, ...) ← 只取奇数列=CHOOSECOLS(A1:D100, 2, 4, 6, ...) ← 只取偶数列
结合 SEQUENCE 自动生成奇偶列号:
=CHOOSECOLS(数据, SEQUENCE(, COLUMNS(数据)/2, 1, 2)) ← 奇数列=CHOOSECOLS(数据, SEQUENCE(, COLUMNS(数据)/2, 2, 2)) ← 偶数列
场景 4:CHOOSEROWS 提取特定行
=CHOOSEROWS(A1:D100, 1, 5, 10) ← 提取第1、5、10行=CHOOSEROWS(A1:D100, 2) ← 提取第2行
场景 5:提取最后 N 行
=CHOOSEROWS(A1:D100, -1) ← 最后一行=CHOOSEROWS(A1:D100, -5) ← 最后5行=CHOOSEROWS(A1:D100, -10, -5, -1) ← 倒数第10、5、1行
场景 6:去掉首列或末列
=CHOOSECOLS(A1:D100, -2) ← 去掉最后一列,保留其他=CHOOSECOLS(A1:D100, -COLUMNS(A1:D100)) ← 只去掉第一列
结合 DROP 更强大(去掉前 N 行/列后,再取特定列):
=DROP(CHOOSECOLS(A4:D100, 1, 3), 1)
场景 7:与 VSTACK/HSTACK 组合 — 精准重建表格
从多个数据源按需拼接列:
=VSTACK( CHOOSECOLS(表1, 1, 3), CHOOSECOLS(表2, 1, 3))
只取两个表中的姓名和工资列,合并成新表。
场景 8:与 FILTER 组合 — 筛选后精准取列
=CHOOSECOLS(FILTER(A1:D100, B1:B100="销售部"), 1, 3)
FILTER 先筛选销售部员工,再用 CHOOSECOLS 只取姓名和工资。
场景 9:与 SORT 组合 — 排序后取 Top N 行
=CHOOSEROWS(SORT(A1:D100, 3, -1), SEQUENCE(5))
按工资降序排序,取前 5 名员工(Top 5)。
场景 10:与 XLOOKUP 组合 — 精准定位后提取整行
=CHOOSEROWS(数据, XLOOKUP("张三", A:A, ROW(A:A)))
找到”张三”的行号,直接提取该行数据。
场景 11:倒序提取列(负数列号)
=CHOOSECOLS(A1:D100, -1, -2, -3) ← 倒序取最后3列
用于快速将表格列顺序反转,或提取最近 N 列数据。
场景 12:指定范围提取(行号范围)
=CHOOSEROWS(A1:D100, SEQUENCE(10, 1, 5, 1))
从第 5 行开始,提取连续 10 行(5~14行)。
结合 CHOOSECOLS 只取部分列:
=CHOOSECOLS(CHOOSEROWS(A1:D100, SEQUENCE(10, 5)), 1, 3)
场景 13:结合 UNIQUE — 去重列
=CHOOSECOLS(UNIQUE(A1:D100), 1, 3)
对去重后的数据,只保留姓名和工资列。
场景 14:动态表头生成
=HSTACK(CHOOSECOLS(数据, 1), {"新增列A", "新增列B"})
保留原始数据第一列,追加新的表头列。
场景 15:CHOOSEROWS 配合 TOCOL/TOROW 降维
=TOCOL(CHOOSEROWS(A1:D10, 1))
提取第一行,降维成一列,配合其他函数生成下拉列表。
四、常见错误处理
|
|
|
|
|---|---|---|
#VALUE! |
|
|
#SPILL! |
|
|
#CALC! |
|
|
五、版本说明
CHOOSECOLS 和 CHOOSEROWS 仅在 Excel 365(订阅版)和 Excel 2021 中可用。
Excel 2019 及以下版本不支持。
如果需要在老版本使用类似功能,可借助 INDEX 函数构建等价公式:
老版本取第1、3列:=INDEX(A:D, , {1,3}) (数组公式,需 Ctrl+Shift+Enter)
六、核心公式速查
|
|
|
|---|---|
|
|
=CHOOSECOLS(数据, 1, 3) |
|
|
=CHOOSECOLS(数据, -1) |
|
|
=CHOOSECOLS(数据, -3, -2, -1) |
|
|
=CHOOSECOLS(数据, -COLUMNS(数据)) |
|
|
=CHOOSEROWS(数据, 1, 5) |
|
|
=CHOOSEROWS(数据, -3) |
|
|
=CHOOSEROWS(SORT(数据, 列, -1), SEQUENCE(5)) |
|
|
=CHOOSECOLS(数据, SEQUENCE(, COLUMNS(数据)/2, 1, 2)) |
总结: CHOOSECOLS 和 CHOOSEROWS 是精准数据提取的利器。配合 SORT、FILTER、VSTACK、HSTACK、SEQUENCE 等函数,可以构建强大的动态数据管道。比传统的 INDEX + COLUMN / ROW 方案简洁得多,代码可读性大幅提升。
如果你觉得这篇有用,欢迎转发给需要的朋友!
夜雨聆风