Google Sheets跨表查询需求:提取含No的Standard与学生姓名
解决方案:提取Google Sheets中符合条件的学生与Standard关联记录
要实现你需要的「提取对应Standard下Pre/Post列含“No”的学生姓名与Standard关联记录」,可以通过将多维数据扁平化后筛选的方式完成,直接用以下公式即可:
=QUERY( ARRAYFORMULA( { FLATTEN('3-5th Data Entry Example'!C4:AG4), FLATTEN('3-5th Data Entry Example'!A4:A28), FLATTEN('3-5th Data Entry Example'!C5:AG28) } ), "SELECT Col1, Col2 WHERE Col3 = 'No' AND Col1 IS NOT NULL", 0 )
公式拆解:
FLATTEN('3-5th Data Entry Example'!C4:AG4):把表头行的所有Standard值转成单列,每个Standard会对应每一位学生的答题记录FLATTEN('3-5th Data Entry Example'!A4:A28):把学生姓名列重复展开为单列,让每个姓名和对应的Standard一一匹配FLATTEN('3-5th Data Entry Example'!C5:AG28):把所有Pre/Post列的Yes/No结果转成单列,和前两列的Standard、姓名形成对应关系QUERY部分:筛选出结果为No且Standard不为空的记录,最终返回Standard(第一列)和学生姓名(第二列)
可选:去重处理
如果同一个学生在同一个Standard下多次出现No,你需要仅保留唯一记录的话,给公式套上UNIQUE即可:
=UNIQUE( QUERY( ARRAYFORMULA( { FLATTEN('3-5th Data Entry Example'!C4:AG4), FLATTEN('3-5th Data Entry Example'!A4:A28), FLATTEN('3-5th Data Entry Example'!C5:AG28) } ), "SELECT Col1, Col2 WHERE Col3 = 'No' AND Col1 IS NOT NULL", 0 ) )
为什么你之前的公式无法关联?
你之前的公式仅转置了Standard值,但没有将学生姓名、答题结果和Standard建立对应的关联关系。通过FLATTEN将三个维度的数据都转成平级的单列后,才能通过QUERY筛选出符合条件的配对记录。
内容的提问来源于stack exchange,提问作者Jarvis Davis
相关产品推荐
相关产品推荐

