BYROW会把指定数组的每一行分别传给LAMBDA,再把各行的结果垂直排列。它适合不增加辅助列的逐行汇总;若每行要返回多个字段,单个BYROW无法直接生成不规则子数组。
BYROW与其他函数怎么分工
| 情况 | 处理 |
|---|---|
| 每行只返回一个合计或状态 | 使用BYROW。 |
| 每列分别计算 | 改用BYCOL。 |
| 每个元素独立转换 | 使用MAP。 |
| 需要为每行返回多列明细 | 先计算各列或使用HSTACK组合独立结果。 |
写出可验证的逐行公式
- 准备小数组
先用3行4列数据手算每行结果,排除表头和总计行。
- 定义row参数
LAMBDA只接收当前行数组,内部用SUM、MAX或COUNT等函数计算一个标量。
- 处理空白与错误
明确空行返回空白还是0,错误值是否应暴露,不能统一IFERROR后丢失原因。
- 扩大正式范围
使用表格或动态区域,确认新增行后结果自动溢出且没有内容阻挡。
判断每名员工四项指标是否达标
四列是质量、时效、响应和合规分数,BYROW对每行取MIN,最低分不小于80则返回“达标”,否则返回“需复核”。
如果还要返回最低分和对应指标名称,应分别生成最低分列与名称列后HSTACK,不能让单次BYROW在某些行返回一个值、另一些行返回两个值。
动态数组行汇总还要测试隐藏列和错误值。BYROW读取的是实际数组,不会因列在界面隐藏而自动忽略;需要排除字段时应先用CHOOSECOLS选择范围,并把选择规则写入公式说明。
交付前检查
- 空行和单行样本结果正确。
- LAMBDA每行只返回一个值。
- 新增记录不会覆盖溢出区域。
- 计算结果与辅助列手算一致。
BYROW把“复制一条公式到每一行”改成一个数组计算。先保证每行规则只产生一个结果,再处理空白和动态范围,公式会更稳定。
逐元素转换可参考Excel MAP函数批量计算数组:配合LAMBDA处理每一行数据;需要根据行列位置新建矩阵时则使用Excel MAKEARRAY函数怎么用:按行列位置生成动态数组。
BYCOL按列遍历数组,并把每列交给LAMBDA计算一个结果。遇到这一具体需求时,可继续查看Excel BYCOL函数怎么用:逐列计算最大值、合计和达标率。