如何在Google Sheets中用板球计分规则实现类SUMIF()的求和
解决Google Sheets中板球投球总Overs的条件求和问题
核心逻辑
先将符合筛选条件的Overs统一转换为总投球数(完整Overs×6 + 额外投球数),求和后再转回板球规则的Overs格式,避开SUMIF直接求和时把小数点当十进制计算的错误。
步骤1:条件计算总投球数
假设你的数据结构:
- A列:对阵球队/所属球队(筛选条件列)
- B列:投球Overs(格式如
3.4、5.0)
用SUMIFS(多条件兼容,单条件也适用)结合转换公式,计算符合条件的总投球数:
=SUMIFS(ARRAYFORMULA(INT(B:B)*6 + MOD(B:B,1)*10), A:A, "你的筛选条件")
公式拆解:
INT(B:B):提取Overs的整数部分(完整Overs数),乘6得到对应球数MOD(B:B,1)*10:提取Overs的小数部分,乘10得到额外投球数(比如3.4的.4代表4球,MOD取小数后是0.4,乘10得4)ARRAYFORMULA:让公式对整列生效,配合SUMIFS批量计算符合条件的记录
单条件场景也可以用SUMIF:
=SUMIF(A:A, "你的筛选条件", ARRAYFORMULA(INT(B:B)*6 + MOD(B:B,1)*10))
步骤2:总球数转回板球Overs格式
得到总投球数后,用以下公式转换回X.Y的板球Overs格式:
=INT(总球数/6) + MOD(总球数,6)/10
把步骤1的公式直接嵌套进去,就能一步得到正确的条件求和结果:
=INT(SUMIFS(ARRAYFORMULA(INT(B:B)*6 + MOD(B:B,1)*10), A:A, "你的筛选条件")/6) + MOD(SUMIFS(ARRAYFORMULA(INT(B:B)*6 + MOD(B:B,1)*10), A:A, "你的筛选条件"),6)/10
嫌公式太长的话,可以用辅助列简化:
- 在C列添加单条记录的总球数公式:
=INT(B1)*6 + MOD(B1,1)*10,下拉填充整列 - 条件求和并转换:
=INT(SUMIF(A:A, "你的筛选条件", C:C)/6) + MOD(SUMIF(A:A, "你的筛选条件", C:C),6)/10
示例验证
比如数据:
| 对阵球队 | Overs |
|---|---|
| 球队A | 3.4 |
| 球队A | 5.0 |
| 球队A | 2.3 |
筛选“球队A”的计算过程:
- 总球数 = (3×6+4)+(5×6+0)+(2×6+3) = 22+30+15=67
- 转换回Overs:67÷6=11余1 →
11.1,和板球规则计算结果一致
注意事项
- 确保B列的Overs是数值格式,而非文本格式,否则INT和MOD函数无法正确提取数值
- 若Overs小数部分为
.0(如5.0),MOD(B:B,1)*10会返回0,不影响计算准确性
内容的提问来源于stack exchange,提问作者Master Trams
相关产品推荐
相关产品推荐

