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

学生多科目注册场景:如何跨列筛选表格信息并展示到另一表格?

多对多学生-科目关系表格自动更新方案

问题分析

原公式仅检查Table 1的B列,无法覆盖B列之后新增的科目列,因此需要遍历所有科目列,筛选出所有注册了目标科目的学生。

改进公式方案(适用于Google Sheets)

在表格2的B2单元格输入以下公式,下拉填充即可:

=TRANSPOSE(FILTER('Table 1'!A:A, BYROW('Table 1'!B:ZZ, LAMBDA(row, A2 IN row))))
  • BYROW('Table 1'!B:ZZ, LAMBDA(row, A2 IN row)):遍历Table 1中B到ZZ的所有行(可根据实际科目列范围调整),检查当前行是否包含表格2A列的目标科目,返回布尔值数组。
  • FILTER('Table 1'!A:A, ...):根据布尔数组筛选出对应的学生姓名。
  • TRANSPOSE(...):将纵向筛选结果转为横向排列,匹配表格2的展示格式。

替代方案(适用于Excel 365及以上版本)

若使用Excel,可使用以下公式:

=TRANSPOSE(FILTER(Table1[学生], MMULT(--(Table1[#All] = A2), SEQUENCE(COLUMNS(Table1)-1,,1,0))>0))
  • --(Table1[#All] = A2):将表格1中所有单元格与目标科目的匹配结果转为0/1数组。
  • MMULT(..., SEQUENCE(...)):计算每行的匹配总和,大于0表示该行学生注册了目标科目。
  • FILTER和TRANSPOSE的作用与Google Sheets版本一致。

更简洁的Google Sheets方案(利用FLATTEN+QUERY)

=TRANSPOSE(QUERY(
  FLATTEN({SPLIT(REPT('Table 1'!A:A&"|", COUNTA('Table 1'!B:ZZ)/ROWS('Table 1'!A:A)), "|"), 'Table 1'!B:ZZ}),
  "SELECT Col1 WHERE Col2 = '"&A2&"' AND Col2 IS NOT NULL", 0
))

该方案先将学生姓名与对应科目逐一配对,再通过QUERY筛选出目标科目的学生,最后转置排列。

内容的提问来源于stack exchange,提问作者Anonymous User

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:15:42