[本文章是在QQ上网友求助给出的代码,然后公布出来给大家参考,文中无敏感信息]
前几天有网友联系我,他也是在论坛中看到过我写的代码,然后加上QQ好友,发来文件求助的。那时我血压有些高在住院冶疗,所以过了三四天才着手解决。他的问题是,将总课表(按第一列是班级,表头是星期几的上下午排列)的数据,表头不变,但是第一列按照人员名字来进行转换。下面给出例图:

按下按钮运行代码后,要得到下面的内容。例图如下:

其实师课表转换的代码,楼主已经写得差不多了,只是有一点小问题没有调试好。主要的思路也就是数组加字典这两大法宝,我也没有重新写,就用调试的功能发现问题,改动一点点(现在也忘记改了哪里了),见下图:


调试就是加断点,查看本地窗口中的变量值,看看有什么问题再给予解决。
第二个问题楼主留白了,见下图:

那么,这个i2单元格里的数据有效性是怎么来的呢?看下图啊:

选择i2单元格,数据刷新,采用了Worksheet_Change事件,见下图:


这里是要用到师课表转换表中的数据,为了用字典取数,要用到统一的字符串并拼接起来。见下图:

要拼成本地窗口红框的模样存到字典中,方便师课表写入数据。

用arr = [a3:h14].Value将这个表读入数组中,然后循环,将符合已经拼接好的关键字从字典中取数,填入数组arr中,最后arr写入工作表,完工。
写代码时老规矩,打开后缀名为xlsm的excel表,按Alt+F11快捷键打开代码窗口(VBE窗口),菜单栏上【插入】à 【模块】,在模块中写入代码即可。如果是后缀名为xlsx的excel表,直接保存后代码会丢失,要另存为xlsm格式。当然,如果是xls格式的表,当我没说。
有需要原文件请提出。。。
完成。2026/5/12制作
夜雨聆风