如何结合IF、INDEX/MATCH等函数实现按教师分表同步学生离校数据?
用INDEX/MATCH+条件函数实现教师专属离校记录同步
先明确各表结构(统一列名假设)
先给各表列名做定义,方便后续写函数:
- Student Reference表:A列=学生姓名,B列=对应教师姓名
- Changes表:A列=日期,B列=学生姓名,C列=离校安排类型(自驾/校车/托管)
- 教师专属标签页:比如「张老师」页,表头和Changes一致:A=日期,B=姓名,C=安排类型
教师标签页的函数实现
在教师标签页的A2单元格(第一行是表头),输入以下数组公式(旧版Excel输入后按Ctrl+Shift+Enter确认,新版可直接回车):
=IFERROR(INDEX(Changes!A:A, SMALL(IF(INDEX(Student Reference!B:B, MATCH(Changes!B:B, Student Reference!A:A, 0))="张老师", ROW(Changes!B:B)-1), ROW(A1))), "")
公式拆解
MATCH(Changes!B:B, Student Reference!A:A, 0):在学生参考表中匹配Changes表的学生姓名,返回对应行号INDEX(Student Reference!B:B, 上述MATCH结果):通过行号提取该学生的对应教师IF(上述INDEX结果="张老师", ROW(Changes!B:B)-1):判断当前Changes记录的学生是否属于张老师,是则返回Changes表的行号(减1是跳过表头行)SMALL(..., ROW(A1)):按顺序提取符合条件的行号,下拉时ROW(A1)会自动变为ROW(A2)/ROW(A3),依次取出第1、2、3条符合记录INDEX(Changes!A:A, 上述SMALL结果):根据行号取出Changes表的日期IFERROR(..., ""):无更多记录时显示空值,避免报错
复制到其他列
把B2和C2的公式替换对应列即可:
- B2(姓名列):
=IFERROR(INDEX(Changes!B:B, SMALL(IF(INDEX(Student Reference!B:B, MATCH(Changes!B:B, Student Reference!A:A, 0))="张老师", ROW(Changes!B:B)-1), ROW(A1))), "")
- C2(安排类型列):
=IFERROR(INDEX(Changes!C:C, SMALL(IF(INDEX(Student Reference!B:B, MATCH(Changes!B:B, Student Reference!A:A, 0))="张老师", ROW(Changes!B:B)-1), ROW(A1))), "")
最后调整
把公式里的"张老师"换成对应教师的名字,或者直接引用标签页中存放教师姓名的单元格(比如A1单元格),然后下拉所有公式,就能自动同步该教师名下学生的所有离校安排记录。
内容的提问来源于stack exchange,提问作者Sarah Savoy
相关产品推荐
相关产品推荐

