从一张表里复制几行数据到工作簿的另一处,等源数据一变,又得把整套动作重来一遍——这是很多人做Excel报表的日常。微软给出的替代方案是TAKE函数:它按位置从数据源里取出需要的行和列,源表更新时结果自动跟着变。
![]()
TAKE函数可在Microsoft 365版Excel、Excel 2024以及网页版Excel中使用。它既能作用于普通单元格区域,也能作用于Excel表格;表格的好处是新增记录时会自动扩展,公式不会因此失效。把表格命名,公式里引用起来也更方便。
语法与参数
TAKE的写法是:=TAKE(array,rows,[columns])。其中array是要取数的区域或表格;rows决定返回多少行;columns决定返回多少列。正数从数据源开头取,负数从末尾取。行或列参数可以留空表示该维度全取,但两者至少要指定一个;任一参数设为0会返回#CALC!错误。
TAKE属于动态数组函数,公式只写在一个单元格里,结果会自动溢出到周边单元格。源表变化(包括新增记录)时结果随之更新。前提是目标单元格为空,若有内容挡住输出,Excel会返回#SPILL!错误。
取行与取列
想从大数据集里固定取若干行,直接在空单元格里写公式即可。例如取预算表的前五条记录:=TAKE(tblBudget,5),返回前五行、包含表格全部列。取最后三条则用负数:=TAKE(tblBudget,-3)。若希望这三条是最近的三笔支出,需要先按日期排序,把最新记录放在底部。
行列参数可以组合,取出更小的数据块。例如返回前五行和前两列:=TAKE(tblBudget,5,2)。
需要留意的是,TAKE按位置取数,不按条件筛选。它不会自动找出最贵的五笔消费,也不会按类别过滤表格,只返回源数据开头或末尾的行。若要挑选互不相邻的特定行,应改用Excel的CHOOSEROWS函数。
取列同理。例如只显示账单表中的Bill和Due date两列:=TAKE(tblBills,,2)。表名后有两个逗号,第一个参数位置留空表示保留全部行,2表示返回前两列。从末尾取则用=TAKE(tblBills,,-1),返回最后一列。
由于按位置选列,如果在表格右侧新增一列,上述公式会改为返回那一列。若想无论位置如何都锁定某个字段,可以用结构化引用,例如返回前三笔金额:=TAKE(tblBills[Amount],3)。要提取多个互不相邻的列,CHOOSECOLS更合适。
与其他函数组合
TAKE嵌套进其他函数后用途更广。比如不手动排序原表,直接生成五笔最高营收的销售记录:=TAKE(SORTBY(tblSales,tblSales[Revenue],-1),5)。SORTBY先按Revenue列把tblSales的行从大到小排列,TAKE再取排序结果的前五行。原表保持不动,新报表只呈现最大的五笔销售。
也可以把TAKE放进AVERAGE里做汇总。例如计算表中最后三条记录的平均值:=AVERAGE(TAKE(tblSales[Revenue],-3))。TAKE取出Revenue列最后三个值,AVERAGE求其均值。若要平均最近三条,同样需要按日期排序、最新记录在底部。
熟悉TAKE之后,把大表裁剪成真正需要的那部分会变得顺手:无论是取出若干行,还是组合函数突出最高营收的销售,都能做出自动更新的报表,省掉重复的手工步骤。如果需求相反,要从数组中排除某些行或列,可以试试Excel的DROP函数。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.