excel的byrow函数,能把二维数据区域按行挨个传给lambda处理,特别适合做每行求和、每行求平均、逐行判断是否达标这类横向运算,常用的写法是 =byrow(数据区域,lambda(单行变量,对这一行执行的计算))。
当前操作软件:Microsoft Excel
软件版本:Microsoft 365
BYROW 函数语法
BYROW(array, lambda(row))
| 参数 | 作用 | 说明 |
|---|---|---|
| array | 要逐行处理的区域 | 例如 B2:D5
|
| row | LAMBDA 中代表当前行的变量名 | 变量名可以自定义,一般习惯写成 r
|
| 计算表达式 | 对每一行执行的公式 | 例如 SUM(r)、AVERAGE(r)
|
第一步:选好逐行计算区域
示例里B到D列分别是语文、数学、英语成绩,E列预留出来放结果。用BYROW的时候只需要选分数所在的区域 B2:D5,别把姓名列一起选进去。

第二步:逐行求总分
直接在E2单元格输入 =BYROW(B2:D5,LAMBDA(r,SUM(r)))。公式会把B2:D5里的每一行依次传给变量r,逐行求和,结果会自动向下溢出铺满整列,不用挨个单元格拖拽填充。

第三步:逐行求平均值
把LAMBDA里的计算部分换成 AVERAGE(r),就能得到每个学生的三科平均分,完整公式是 =BYROW(B2:D5,LAMBDA(r,AVERAGE(r))),只改计算逻辑就行,前面选好的数据区域完全不用变。

扩展示例
如果要判断每行所有科目是不是全部及格,可以写 =BYROW(B2:D5,LAMBDA(r,IF(MIN(r)>=60,"通过","复核")))。如果要统计每行里分数大于90的科目数量,可以写 =BYROW(B2:D5,LAMBDA(r,COUNTIF(r,">90")))。
兼容性和常见错误
BYROW属于比较新的动态数组函数,Microsoft 365和部分新版Excel支持效果最好。旧版Excel或者部分版本的WPS表格可能没有集成这个函数,要是输入公式后出现 #NAME? 报错,基本就是当前版本不支持该函数。如果公式返回 #CALC!,多半是LAMBDA没有给每一行返回单个结果;要是提示返回区域被占用,清空溢出范围内的内容再重新计算就好。











