课程表 : 由总表自动生成班级、老师课程表 ( 适合学校教务处排课) 用公式制作了一个学校或年级部使用的排课表,适用用 12 个班以下。 其中全部用查找引用函数公式(没有用 VBA),方便使用者修改其中的内容. 在总课程表中选择了各班的课程后会自动出现老师名字,总表中利用数据有效性直观显示冲突的排课。 在《班级课程表》中选择不同的班级就会自动出现班级课程.《老师个人课程表》中选择不出的老师名字也可以生成个个课程表,显示上课班级及代课科目,同时统计该老师个人周课时数。请下载时下载下面的最新版本。在《老师个人课程表》中定义了 2 个名称公式和目的如下:次数=COUNTIF(OFFSET(zou1,ROW(老师课程表!1:1)*2,(COLUMN(老师课程表!A:A)-1)*12,,),老师课程表!$E$2)这个公式主要是通过 COUNTIF 求在《总表》中周 1 到周 5 的同一个课时里,某个老师的名字出现的次数.注意 zou1 也是一个定义的名称《总表》中。 假如一个课时出现某个老师名字次数为 0,肯定没他的课程。假如出现 1 次,就返回名字上面的课程及班级.假如出现 2 次以上,就是排课出错,有冲突了。 序列==CHOOSE({1;2;3},OFFSET(zou1,老师课程表!$B3*2,VLOOKUP( 老 师 课 程 表 !D $ 3 , { ” 一 " ,0;" 二 ",1 ; " 三 ",2 ; ” 四 ” , 3 ; ” 五 ” , 4;" 六 ",5},2,0 ) *12,,),OFFSET(zou1,老师课程表!$B3*2—1,VLOOKUP(老师 课 程 表 !D$3, { " 一 " , 0;" 二 ” ,1 ; " 三 ",2;” 四 ",3;" 五 ” ,4;"六",5},2,0)*12,,),OFFSET(zou1,,VLOOKUP(老师课程 表 !D$3,{" 一 " , 0;" 二 ",1 ; ” 三 ” , 2 ; " 四 " ,3;"五”,4;"六",5},2,0)*12,,)) 关于 CHOOSE 函数各位了解一下就可以了,这个公式的目的是抽出相应的 3 个区域,便于想找课程及班级的信息.请各位高手给进一步完善和改进公式设置。欢迎大家提出进一步的改进意见!