Google表格技术问询:如何统计含特定值行的Gain总和并计算均值
在Google Sheets中计算多列包含指定词汇的行的Gain均值
当然可以实现这个需求!我明白你遇到的问题——SUMIF确实只适合单列条件的场景,当关键词分散在多列时,就得换个思路用函数组合来解决了。
核心思路
我们需要三步完成计算:
- 识别所有包含目标词汇的行
- 累加这些行的
Gain值总和 - 统计包含目标词汇的总行数,最后用总和除以行数得到均值
具体公式实现
1. 基础组合公式
直接把两个计算步骤合并成一个公式,以你的数据示例(搜索"cow",数据范围B2:E4,Gain列F2:F4)为例:
=SUMPRODUCT(--(MMULT(--(B2:E4="cow"),SEQUENCE(COLUMNS(B2:E4),1,1,0))>0),F2:F4)/SUMPRODUCT(--(MMULT(--(B2:E4="cow"),SEQUENCE(COLUMNS(B2:E4),1,1,0))>0))
公式拆解:
--(B2:E4="cow"):把单元格匹配结果转成1(匹配)或0(不匹配)的数组MMULT(..., SEQUENCE(COLUMNS(B2:E4),1,1,0)):对每一行的匹配结果求和,判断该行是否至少有一个匹配(总和>0)--(...)>0:把行匹配结果转成1或0,方便后续计算- 第一个
SUMPRODUCT:累加所有匹配行的Gain值 - 第二个
SUMPRODUCT:统计匹配的总行数 - 最后相除得到均值
2. 简化版(用LET函数提高可读性)
如果你的Google Sheets支持LET函数(大部分最新版本都支持),可以把公式写得更清晰,方便后续修改范围或关键词:
=LET( data_range, B2:E4, // 要搜索关键词的多列范围 gain_range, F2:F4, // Gain值所在的列范围 search_term, "cow", // 要搜索的目标词汇 // 以下是计算逻辑 row_matches, --(MMULT(--(data_range=search_term),SEQUENCE(COLUMNS(data_range),1,1,0))>0), total_gain, SUMPRODUCT(row_matches, gain_range), match_count, SUM(row_matches), // 返回均值 total_gain/match_count )
验证你的示例
用"cow"作为搜索词时:
- 匹配的行是第2行(Gain=12)和第3行(Gain=5),总和17
- 匹配行数是2
- 计算结果为
17/2=8.5,完全符合你的预期
注意事项
- 替换公式中的
data_range、gain_range和search_term为你实际的表格范围和关键词即可 - 如果要搜索的是动态关键词(比如单元格引用),把
"cow"改成单元格地址(比如A1)就行
内容的提问来源于stack exchange,提问作者sunnyj58




