ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: zhaolanhe

[已解决] 如何从总课程表和教师分工表制作教师个人课程表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-24 21:22 | 显示全部楼层
huangym 发表于 2019-2-23 22:46
学习中,还是感觉好复杂

我仅回答你关于“OFFSET(班别,,1+(COLUMN()-3)*9+教师及班课表!$B5,,)代码中的数字1、-3、*9分别表示什么意思呢?”的疑问
1,首先你必须明白函数  offset()及COLUMN()语法
    简单讲 offset()的语法是,
     offset(基准区域,相对于基准区域的行偏移,相对于基准区域的列偏移,有效行数,有效列数)
    (详细说明见Excel说明 )
    COLUMN() 是获取当前单元格列号

2,在理解了1的前提下你就可明白OFFSET(班别,,1+(COLUMN()-3)*9+教师及班课表!$B5,,)的含义
    即   以“班别”定义的区域为基准,右偏移若干列。偏移量为1+(COLUMN()-3)*9+教师及班课表!$B5
         是(1+(当前列号-3)*9+课节数)
         
      (当前列号-3)*9    表示将当前列的位移放大9倍  为啥要放大9倍,你猜猜看。


        因为当前列偏移1列表示1天,而总课表的完整的一天包含9列(上午5列,下午4列)

        课节数好理解,第几节课,就移多少了。

TA的精华主题

TA的得分主题

发表于 2019-2-24 21:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 huangym 于 2019-2-24 23:36 编辑
CLL1998 发表于 2019-2-24 21:22
我仅回答你关于“OFFSET(班别,,1+(COLUMN()-3)*9+教师及班课表!$B5,,)代码中的数字1、-3、*9分别表示什么 ...

解答得好详细了,操作起来难度还是好大,谢谢
谢谢您在百忙之中帮修改文件,那个新增的班级课程代码好深奥

TA的精华主题

TA的得分主题

发表于 2019-2-24 23:27 | 显示全部楼层
CLL1998 发表于 2019-2-24 21:22
我仅回答你关于“OFFSET(班别,,1+(COLUMN()-3)*9+教师及班课表!$B5,,)代码中的数字1、-3、*9分别表示什么 ...

非常感谢您帮修改的文件,谢谢。

TA的精华主题

TA的得分主题

发表于 2019-2-25 09:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
厉害,学习一下。

TA的精华主题

TA的得分主题

发表于 2019-2-25 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 CLL1998 于 2019-2-25 16:44 编辑
huangym 发表于 2019-2-24 21:47
解答得好详细了,操作起来难度还是好大,谢谢
谢谢您在百忙之中帮修改文件,那个新增的班级课程代码好深 ...


其实,班级课表中的“班级课程”就是用函数offset()定义的名称

截图2.jpg
  班级课表的数据来源自课程总表
截图1.jpg
  课程总表的排版规律是  每天的数据有8列(每天8节课),相邻天的数据有1列空白列间隔以便浏览,班号为行标识。也就班级课表每  变动1天,课程总表的数据寻访就得移动9列。
对应地,班级课表中的“班级课程”在逻辑上表示就是 班级课程=OFFSET(课程总表!$A$5,行偏移调整,列偏移调整,,)     式中:   “课程总表!$A$5”是给函数OFFSET()指定的  课程总表操作基准单元格
                  “行偏移调整” 依据班级课表中指定班号(班级课表!$G$1)作的行偏移,其数值=MATCH(班级课表!$G$1,班别,0)
                   “列偏移调整”,分为两部分,依据周几作的偏移及依据课节作的偏移
                    数值上分别是(COLUMN()-4)*9及MID(班级课表对应课节字符串,2,1)*1    (就是从对应课节字符串中拆出课节数)
                   综上  
                   班级课程=OFFSET(课程总表!$A$5,MATCH(班级课表!$G$1,班别,0),(COLUMN()-4)*9+MID(班级课表对应课节字符串单元格,2,1)*1,,)




TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-8 17:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-9-3 13:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-6-17 09:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
恰噶

TA的精华主题

TA的得分主题

发表于 2021-2-14 22:27 来自手机 | 显示全部楼层
能否把班级扩展到50个班,200个老师
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 14:38 , Processed in 0.037355 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表