寻求SUMIFS+Arrayformula替代方案:按团队赛季日期范围计算总分
按多条件(团队、赛季、日期范围)计算人员总得分的Google Sheets公式方案
问题背景
需要制作Google Sheets公式,按团队(蓝队/红队/黄队)、赛季及指定日期范围,计算对应人员的总得分(C列)。遇到核心问题:
- 用
FILTER获取对应团队人员列表(返回数组)搭配SUMIF可正常求和,但无法添加赛季、日期范围这类额外筛选条件; - 改用
SUMIFS时,函数仅会取FILTER返回的第一个结果,无法对所有团队人员求和。
已尝试的公式:
- 仅支持团队筛选的SUMIF公式:
=ARRAYFORMULA(SUM(SUMIF(A4:A10,FILTER(G4:G7,H4:H7=D15),C4:C10)))
- 仅取单个成员结果的SUMIFS公式:
=SUMIFS(C4:C10, A4:A10,FILTER(G4:G7,H4:H7=D15),B4:B10,">="&F15,B4:B10,"<"&G15,D4:D10,E15)
解决方案
方案1:SUMPRODUCT多条件数组求和
=SUMPRODUCT( C4:C10, --ISNUMBER(MATCH(A4:A10, FILTER(G4:G7, H4:H7=D15), 0)), --(B4:B10>=F15), --(B4:B10<G15), --(D4:D10=E15) )
- 原理:通过
MATCH判断当前行人员是否属于目标团队,--将布尔值转为1/0;日期、赛季条件同样转成1/0数组;SUMPRODUCT对所有数组对应位置相乘后求和,只有全满足条件的行才会被计入总分。
方案2:QUERY结构化查询求和
=QUERY( A4:D10, "SELECT SUM(C) WHERE A MATCHES '"&TEXTJOIN("|", TRUE, FILTER(G4:G7, H4:H7=D15))&"' AND B >= date '"&TEXT(F15,"yyyy-mm-dd")&"' AND B < date '"&TEXT(G15,"yyyy-mm-dd")&"' AND D = '"&E15&"' LABEL SUM(C) ''" )
- 原理:用
TEXTJOIN将团队成员列表转为正则匹配格式,TEXT将日期转为QUERY识别的标准格式,通过SQL风格语句筛选并求和,结果更直观易读。
方案3:MAP+LAMBDA遍历成员累加SUMIFS结果
=SUM(MAP(FILTER(G4:G7, H4:H7=D15), LAMBDA(name, SUMIFS(C4:C10, A4:A10, name, B4:B10, ">="&F15, B4:B10, "<"&G15, D4:D10, E15))))
- 原理:
MAP遍历目标团队的每个成员,对每个成员单独用SUMIFS计算符合日期、赛季条件的得分,最后用SUM累加所有成员的得分总和。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

