BYROW 函数¶
函数概述¶
BYROW 用于按行遍历一个数组/区域,把每一行依次交给你提供的 LAMBDA 计算,并将每行的计算结果汇总成一个新数组返回。它常用于“对每一行做同一套计算”的场景,比如:逐行求和、逐行统计达标数、逐行判断是否满足条件、逐行生成标签等。
你可以把它理解为:把二维数据拆成很多行 → 每行套一次规则 → 拼回结果。
基础语法¶
参数说明¶
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
array |
区域/数组 | 是 | 要按行处理的数据源,可以是区域引用或公式生成的数组 |
lambda |
LAMBDA | 是 | 对“每一行”执行的函数,形如 LAMBDA(row, 计算表达式) |
补充说明:
lambda里通常写成LAMBDA(r, ... ),其中r代表当前行(一个横向数组)。BYROW会返回一个“按行输出”的结果:通常是单列(每行一个结果),也可能是多列(如果你的 LAMBDA 返回横向数组)。
基础用法示范¶
下面示例假设数据区域为一个 5 行 × 4 列的表(例如每行是一个员工/订单,每列是不同指标)。
1) 逐行求和¶
需求:每行把 4 个数相加,得到每行总计。
返回结果:一列 5 个值,每个值对应一行的合计。
2) 逐行求平均¶
需求:每行计算平均分/平均值。
3) 逐行统计非空数量¶
需求:每行统计填写了多少项(非空单元格数)。
如果是统计数字个数,可用:
4) 逐行判断是否达标¶
需求:每行总分 ≥ 240 显示“达标”,否则“未达标”。
5) 逐行统计满足条件的个数¶
需求:每行统计“≥60”的科目数。
6) 逐行生成多列结果¶
需求:每行同时返回“总分、平均分”两列结果(横向输出)。
返回结果会溢出为 5 行 × 2 列。
7) 与筛选/清洗组合使用¶
需求:先过滤掉空行,再对剩余行求和。
思路:BYROW 先生成每行是否为空的判断数组,再配合 FILTER 过滤,最后对过滤后的数据逐行计算。
总结¶
BYROW(array, LAMBDA(row, ...))专门解决“按行批量套同一规则”的问题。row参数代表当前行的横向数组,可直接交给SUM/AVERAGE/COUNTIF等函数处理。LAMBDA返回一个值时,最终结果通常是一列;返回横向数组时,可得到多列输出。- 常见用途:逐行汇总、逐行统计、逐行打标、逐行生成派生字段;与
LET/FILTER/HSTACK搭配能写出更清晰的动态数组方案。