choosecols 可以从一块数据区域里按列号抽取指定列,适合做报表瘦身、字段重排、提取姓名城市金额等场景。常用写法是 =choosecols(a1:g5,2,4,5),意思是从 a1:g5 中依次取第 2 列、第 4 列和第 5 列。
完整语法是 CHOOSECOLS(array,col_num1,[col_num2],...)。array 是要处理的数据区域,col_num1 是必须填写的列序号,后面的 col_num2 可以继续追加更多列。列号从区域内部开始数,不是从工作表 A 列固定开始数。
| 参数 | 含义 | 示例 |
| array | 原始数据区域 | A1:G5 |
| col_num1 | 至少要返回的一列 | 2 表示返回区域内第 2 列 |
| col_num2... | 继续返回其它列,可按任意顺序写 | 2,4,5 返回第 2、4、5 列 |
| 负数列号 | 从区域右侧倒数取列 | -1 表示最后一列 |
当前操作软件:Microsoft Excel
软件版本:Microsoft 365
第一步:确认源数据区域
先确认源数据区域。示例里 A1:G5 包含编号、姓名、部门、城市、销售额、利润、备注 7 列,目标是只抽出姓名、城市、销售额三列做简表。

第二步:输入指定列公式
在空白位置输入 =CHOOSECOLS(A1:G5,2,4,5)。A1:G5 是源区域,2 对应姓名列,4 对应城市列,5 对应销售额列。公式会把这三列按填写顺序横向溢出。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

第三步:检查返回结果
按回车后检查结果区域。返回结果只保留姓名、城市、销售额,原表里的编号、部门、利润、备注不会带出来。后续源数据新增行时,公式区域要同步覆盖新范围,或者把源数据转成表格后再引用表格列。

第四步:按倒数列取字段
CHOOSECOLS 还可以改变列顺序。比如 =CHOOSECOLS(A1:G5,5,2) 会先返回销售额,再返回姓名;如果用 =CHOOSECOLS(A1:G5,-1,-3),则会从右往左取最后一列和倒数第三列,适合原表列数经常变化但末尾字段固定的表。

常见错误主要有三类。列号写成 0 会返回 #VALUE!,列号超过区域列数也会报错;结果区域右侧如果已有内容,会出现 #SPILL!,清空溢出范围即可;函数名无法识别时出现 #NAME?,需要检查 Excel 版本是否支持动态数组新函数。
扩展示例可以把 CHOOSECOLS 和 FILTER 组合使用:=CHOOSECOLS(FILTER(A1:G100,C1:C100="华东"),2,4,5)。这个公式先筛选部门为华东的记录,再只保留姓名、城市、销售额三列,适合从明细表生成给同事查看的简版清单。










