BYCOL 函数¶
函数概述¶
BYCOL 是 Excel 动态数组函数之一,用于按列遍历一个数组/区域,并将每一列作为一个整体交给 LAMBDA 计算,最后把每列的计算结果汇总成一个新的数组返回。
它特别适合做“逐列统计/逐列转换/逐列提取”的场景,例如:每列求和、每列最大值、每列生成标签、每列标准化等。
常见搭配:LAMBDA、SUM、AVERAGE、MAX、FILTER、TAKE、DROP、LET。
基础语法¶
参数说明¶
| 参数 | 必填 | 含义 | 说明 |
|---|---|---|---|
| array | 是 | 要按列处理的数组/区域 | 可以是区域引用或公式返回的动态数组 |
| lambda | 是 | 对“每一列”执行的计算逻辑 | 形如 LAMBDA(col, 计算表达式),其中 col 代表当前列(一个列向量数组) |
基础用法示范¶
说明:下面示例用到的数据源请按你的表格自行摆放;我用“数据源表”描述字段与示例值,你可以替换为实际区域引用。
示例1:每列求和¶
需求:对多列数据分别求和,返回每列总和。
数据源(示例)
| 列1 | 列2 | 列3 |
|---|---|---|
| 10 | 12 | 8 |
| 5 | 3 | 9 |
| 7 | 6 | 4 |
公式
结果说明:返回一个横向数组,例如 {22, 21, 21}(对应每列的总和)。
示例2:每列求平均并保留两位小数¶
需求:逐列计算平均值并四舍五入到 2 位。
公式
示例3:每列统计“非空单元格”数量¶
需求:每列有空值,统计每列非空个数。
公式
示例4:每列求最大值,并生成带前缀的标签¶
需求:输出形如 Max=xxx 的结果(每列一个)。
公式
结果说明:返回横向文本数组,如 {Max=10, Max=12, Max=9}。
示例5:每列做标准化(减去本列均值)¶
需求:把每列数据转换为“减去本列平均值”的结果,输出与原数据同尺寸的矩阵。
公式
结果说明:BYCOL 的每次 LAMBDA 产出的是一整列数组,因此最终会拼成与原区域行数相同、列数相同的新数组。
示例6:与 LET 搭配,返回两行结果¶
需求:做一个小报表:第一行是各列总和,第二行是各列平均。
公式
结果说明:VSTACK 将两行结果纵向堆叠,形成 2 行 N 列的汇总表。
总结¶
BYCOL的核心是:按列迭代 + 把每列交给 LAMBDA。array决定要处理的列范围;LAMBDA(col, …)决定“每一列要算什么”。- 输出既可以是每列一个值(如求和、最大值),也可以是每列一个数组(如标准化后返回整列),从而得到与原区域同尺寸或结构化的新动态数组。
- 当你需要“逐列统计、逐列转换、逐列生成结果”时,
BYCOL通常比手写多组公式更简洁、更可维护。