如何统计课程表中每门课程对应每位教师的周授课次数
课程表教师授课次数统计高效解决方案
核心思路
先把课程表中「偶数行课程名-奇数行教师」的对应关系转换成结构化明细数据,再基于明细数据完成分组统计,彻底替代逐行手动计算的低效操作。
方法一:Power Query 批量处理(推荐,高效无重复操作)
- 导入数据到Power Query
选中课程表所有数据区域,点击「数据」→「从表格/区域」,确认数据导入编辑器。 - 添加分组索引
在编辑器中点击「添加列」→「索引列」(从1开始),再添加自定义列生成组ID:
这样每两行(课程行+教师行)会被分到同一组。= Number.IntegerDivide([索引]-1, 2) - 分组提取课程与教师
按「组ID」分组,设置操作为「聚合」:- 课程名:取组内索引为偶数的行(原表偶数行)内容,示例公式:
List.First(List.Select([内容], (x)=>Number.Mod(Record.Field(x,"索引"),2)=0))[课程列标题](替换「课程列标题」为你的实际列名) - 教师列表:取组内索引为奇数的行(原表奇数行)内容,用
Text.Split(List.First(List.Select([内容], (x)=>Number.Mod(Record.Field(x,"索引"),2)=1))[教师列标题], " ")拆分多教师条目
- 课程名:取组内索引为偶数的行(原表偶数行)内容,示例公式:
- 展开教师列表
点击教师列表列的展开按钮,选择「到新行」,把每个教师拆成单独条目。 - 加载回Excel
点击「关闭并上载」,得到包含「课程名」「教师」的明细数据表。 - 统计授课次数
在新表格中用COUNTIFS统计:=COUNTIFS(明细表[课程名], A2, 明细表[教师], B2)
方法二:动态数组公式(适合Excel 365/2021)
- 生成课程-教师明细列
用公式自动提取所有课程和对应教师,拆分多教师条目:
替换=LET( 课程区域, IF(MOD(ROW($A$1:$Z$70),2)=0, $A$1:$Z$70, ""), 教师区域, IF(MOD(ROW($A$1:$Z$70),2)=1, $A$1:$Z$70, ""), 课程列表, TOCOL(课程区域,3), 教师列表, TOCOL(TEXTSPLIT(TOCOL(教师区域,3), " "),3), 匹配行, ROUNDUP(SEQUENCE(ROWS(教师列表))/2,0), HSTACK(INDEX(课程列表,匹配行),教师列表) )$A$1:$Z$70为你的课程表实际区域,公式会自动生成所有课程-教师的明细对。 - 生成唯一统计列表
提取唯一的课程-教师组合:=UNIQUE(上面的明细公式) - 统计授课次数
对每个组合用COUNTIFS:=COUNTIFS(INDEX(明细区域,,1), A2, INDEX(明细区域,,2), B2)
旧版本Excel兼容方案
- 用「分列」功能将教师单元格按空格拆分,转置后合并成单列。
- 用
INDEX+ROW函数匹配对应课程名,生成明细列表。 - 用
SUMPRODUCT统计次数:=SUMPRODUCT((课程区域=A2)*(ISNUMBER(SEARCH(B2,教师区域))))
内容的提问来源于stack exchange,提问作者Subhajit Paul
相关产品推荐
相关产品推荐

