Google Sheets模块加权成绩求和公式问题求助
Google Sheets 按模块加权成绩求和解决方案
你的核心问题是原公式无法准确定位下一个模块的起始位置,导致求和范围错误延伸到表格底部。以下是两种可行的解决方案:
方法1:BYROW+INDIRECT组合公式
将以下公式输入到F2单元格,会自动为每个模块计算对应E列的加权成绩总和:
=BYROW(A2:A, LAMBDA(row_val, IF(row_val="", "", SUM( INDIRECT("E"&ROW(row_val)&":E"&IFERROR(MATCH(TRUE,OFFSET(A2:A,ROW(row_val)-ROW(A2)+1,0)<>"",0)+ROW(row_val)-1,ROWS(E:E))) ) ) ))
公式逻辑说明:
BYROW(A2:A, LAMBDA(row_val, ...)):遍历A列每一行,逐个处理模块行IF(row_val="", "", ...):仅对A列非空的模块行计算求和,空行返回空值INDIRECT("E"&ROW(row_val)&":E"&...):构造当前模块的E列求和范围MATCH(TRUE,OFFSET(A2:A,ROW(row_val)-ROW(A2)+1,0)<>"",0):定位当前模块行之后第一个非空的A列单元格(下一个模块的起始行)IFERROR(...,ROWS(E:E)):处理最后一个模块的边界情况,若无后续模块则求和到表格最后一行
方法2:ARRAYFORMULA简化版
若偏好数组公式写法,可使用以下公式:
=ARRAYFORMULA( IF( A2:A="", "", SUMIF( ROW(E:E), ">="&ROW(A2:A), IF(ROW(E:E)<IFERROR(MATCH(TRUE,A3:A<>"",0)+ROW(A2:A)-1,ROWS(E:E)),E:E,0) ) ) )
原公式问题分析:
你之前的公式中,MATCH(TRUE,ISBLANK(A3:A),0)是查找第一个空白行,而非下一个模块的起始行,这会导致求和范围错误包含后续模块的成绩,甚至延伸到表格底部。
内容的提问来源于stack exchange,提问作者Photon
相关产品推荐
相关产品推荐

