跳转至

TAKE 函数

函数概述

TAKE 函数用于从数组或区域的开头/结尾提取指定数量的行或列,返回一个更小的数组结果。它常用于动态数组场景,比如从明细表里快速取“前 N 行”“后 N 列”“最新 N 条记录”等。

  • 取前面:参数为正数
  • 取后面:参数为负数
  • 可同时指定行数与列数,灵活裁剪二维数据

适用场景举例:

  • 取销售表前 10 条记录
  • 取最近 7 天数据(配合排序后取末尾)
  • 从宽表中只保留左侧关键列或右侧指标列

基础语法

TAKE(array, [rows], [columns])

参数说明

参数 是否必填 说明 取值示例
array 必填 要截取的数组/区域 A2:D100、Table1[#All]、FILTER(...)
rows 可选 要截取的行数;正取前、负取后;省略表示不按行裁剪 5、-3
columns 可选 要截取的列数;正取左、负取右;省略表示不按列裁剪 2、-1

补充规则(便于理解):

  • rows=3:取前 3 行rows=-3:取后 3 行
  • columns=2:取左 2 列columns=-2:取右 2 列
  • 若只想裁剪列:可省略 rows,但要保留占位逗号:TAKE(array,,2)

基础用法示范

取前N行

需求:从 A2:D100 中取前 5 行。

=TAKE(A2:D100,5)

取后N行

需求:取最后 7 行(常用于“最新 7 条”)。

=TAKE(A2:D100,-7)

取左N列

需求:只保留左侧 3 列。

=TAKE(A2:D100,,3)

取右N列

需求:只保留最右侧 2 列(例如两项指标列)。

=TAKE(A2:D100,,-2)

同取行和列

需求:取前 4 行且取左 2 列(裁剪成 4×2)。

=TAKE(A2:D100,4,2)

取末行末列块

需求:取最后 3 行且取右 2 列。

=TAKE(A2:D100,-3,-2)

配合排序取TopN

需求:按“销售额”降序排序后取前 10 行。假设数据为 A2:D100,销售额在第 4 列。

=TAKE(SORT(A2:D100,4,-1),10)

配合筛选后再截取

需求:筛选出“华东”区域后,取其中前 5 条。假设区域列在第 2 列。

=TAKE(FILTER(A2:D100,INDEX(A2:D100,,2)="华东"),5)

取表头或表尾

需求:取表头 1 行(常用于提取标题行或字段名)。

=TAKE(A1:D100,1)

需求:取表尾 1 行(常用于取最新汇总行)。

=TAKE(A1:D100,-1)

总结

TAKE 是一个“数组裁剪”函数:用最少的参数快速从数据的前/后截取指定行列,尤其适合动态数组工作流。记住三点就够用:

  1. 正数取前/左,负数取后/右
  2. 只截列时写成:TAKE(array,,columns)
  3. SORTFILTER 等搭配,可轻松实现 TopN、最新N、条件后截取等常见报表需求