You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中按行去重统计字符串出现次数的公式问题

解决Google Sheets中按教师统计唯一学生的问题

首先明确你的核心需求:统计每个教师对应的唯一学生数量,要排除同一学生行内重复出现的教师记录(比如Lin的B和D列都是教师1,只能算1次,所以教师1的正确统计是3,而非4)。

你的Excel公式在Google Sheets失效的原因是:OFFSET函数在两个工具中的数组行为不一致——Excel会把OFFSET(B$2:D$2, ROW($2:$4)-1, 0)解析为包含每行B-D区域的数组,但Google Sheets不会自动生成多区域数组,只会返回单个区域,导致后续的COUNTIF无法正确遍历每行数据。

下面给你几个适配Google Sheets的高效解决方案:

方案1:直观的逐行检查法(适合新手)

把这个公式放在F5(对应E5的教师编号):

=COUNTA(BYROW(B2:D4, LAMBDA(row, IF(COUNTIF(row, E5)>0, 1, ""))))

工作原理:

  • BYROW(B2:D4, LAMBDA(row, ...)):逐个遍历每行(每个学生的教师记录)
  • IF(COUNTIF(row, E5)>0, 1, ""):如果当前学生的记录里有目标教师,就标记为1,否则留空
  • COUNTA:统计标记为1的行数,也就是有多少个学生至少和该教师见过一次(自动跳过行内重复的教师记录)

方案2:更简洁的SUMPRODUCT版本

如果喜欢用SUMPRODUCT风格的公式,这个更紧凑:

=SUMPRODUCT(--(BYROW(B2:D4, LAMBDA(r, COUNTIF(UNIQUE(r), E5)>0))))

工作原理:

  • UNIQUE(r):先对当前行的教师记录去重(去掉同一学生重复的教师)
  • COUNTIF(UNIQUE(r), E5)>0:检查去重后的记录里是否有目标教师,返回TRUE/FALSE
  • --:把布尔值转换为1/0
  • SUMPRODUCT:求和得到最终的唯一学生数量

方案3:批量统计所有教师(高效进阶)

如果需要一次性统计所有教师的学生数量,而不是单个查询,用QUERY函数更高效:

=QUERY(
  FLATTEN(BYROW(B2:D4, LAMBDA(r, TEXTJOIN(",", TRUE, UNIQUE(r))))),
  "SELECT Col1, COUNT(Col1) 
   WHERE Col1 IS NOT NULL 
   GROUP BY Col1 
   LABEL Col1 '教师编号', COUNT(Col1) '学生数量'"
)

工作原理:

  • 先对每行的教师记录去重,转成逗号分隔的字符串
  • FLATTEN把所有字符串拆成单个教师编号的列表(每个学生对应其所有不重复的教师)
  • QUERY分组统计每个教师对应的学生总数,直接生成统计表格

内容的提问来源于stack exchange,提问作者W Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:39:29