跳转至

COLUMNS 函数

函数概述

COLUMNS 函数用于返回引用区域中的列数。它常用来:

  • 统计某个区域有多少列(例如数据源、表头区间)
  • 配合 INDEX、OFFSET、CHOOSECOLS、动态数组等做动态取列/循环编号
  • 在横向扩展公式时,自动生成递增序号或控制返回列位置

基础语法

=COLUMNS(array)

参数说明

参数 必填 类型 说明
array 引用/数组 需要统计列数的区域或数组表达式

说明补充:

  • array 可以是单元格区域(如 A1:D10)、结构化引用(如 Table1[#All])、也可以是数组结果(如 A1:D10*1)。
  • array 只有一列,结果为 1;只有一个单元格,也视为 1 列。

基础用法示范

示例1 返回列数

目标:统计区域 A1:D10 的列数。

=COLUMNS(A1:D10)

结果:4


示例2 统计整行列数

目标:统计第 1 行从 A 到 H 一共多少列。

=COLUMNS(A1:H1)

结果:8


示例3 动态取最后一列

目标:在 A2:D2 中返回最后一列的值。

=INDEX(A2:D2,1,COLUMNS(A2:D2))

逻辑:COLUMNS(A2:D2) 得到 4,所以 INDEX(...,1,4) 返回第 4 列的值。


示例4 横向填充递增序号

目标:在一行中从左到右生成 1、2、3、4…… 在第一个单元格输入(假设从 B2 开始),然后向右填充:

=COLUMNS($B2:B2)

效果:B2 为 1,C2 为 2,D2 为 3…… 要点:左端固定 $B2,右端随填充扩展。


示例5 配合MATCH取指定列

目标:从 A2:D2 返回“标题所在列”的数据(标题在 A1:D1)。

=INDEX(A2:D2,1,MATCH("销量",A1:D1,0))

你也可以用 COLUMNS 做边界控制,例如将查找列限定在动态范围内:

=INDEX(A2:Z2,1,MIN(MATCH("销量",A1:Z1,0),COLUMNS(A1:Z1)))

总结

  • COLUMNS 用来数列:返回引用区域/数组的列数量。
  • 典型用途:统计宽度、动态定位列、横向填充序号、配合 INDEX 等函数做动态取值。
  • 编写技巧:横向递增时常用 COLUMNS($起点:当前) 的写法,让结果随填充自动增加。