Excel 公式函数/排课表/INDIRECT、TIME、MOD、TEXT函数的结合使用

本文于2023年5月17日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

☆本期内容概要☆

  • INDIRECT、TIME、MOD、TEXT函数的结合使用

今天在EXCELHOME论坛上看到网友求助:

本着助人为乐的精神,下载附件看了看,他的表是这样子的:

老兄,老师有1000多人,你横着排是几个意思?

话不多说,稍微思考一下,想到了一个可能是可行的方案,重新设置表格,详细如下

1、课时表:上课时间,由日期、时间段组成:

公式分析:

A3=IF(B2=TIME(18,0,0),A2+1,A2)
如果右侧时间上一单元格为18点钟,
则日期+1,否则日期同上一单元格。
B3=IF(A3<>A2,$B$2,TIME(HOUR(B2),
MINUTE(B2)+20,SECOND(B2)))
如果左侧日期不等于上一单元格,
则时间从头开始,否则上一单元格+20分钟

2、课程表:所有课程列表,并计算课程数量填在B1单元格:

公式分析:

B1=COUNTA(A:A)-1
用COUNTA函数统计
A列非空单元格,减去表头
就是所有课程的数量。

3、老师排课表,根据课时、课程进行顺序组合:

公式分析:

B2=IF(课时!A2="","",
TEXT(课时!A2,"YYYY-MM-DD") &"  "& 
TEXT(课时!B2,"hh:mm"))
从课时表中顺序取得日期、时间
用TEXT函数设置格式
日期时间中间加空格
C2=IF(B2="","",INDIRECT("课程!A" &MOD( ROW()-2,课程!$B$1)+2))
把当前行号-2再除以课程总数,求余
得到一个循环序列
再通过INDIRECT函数得到一个
课程!A2起的引用,取得课程名称。

4、在本文编写过程中,该网友提出还有一个条件,按各个老师的能上课的时间来排课,由于没有具体数据表样,暂时无法给出合适的方案。不过,也进行了一番考虑,可以根据条件采用以下不同方案:

(1)如果冲突课时不多,可以把初排的结果手工调整。

(2)如果冲突课时较多,可以使用VBA编程,把初排结果进行调整。

好,今天就分享到这,欢迎点赞、留言、分享,谢谢大家,我们下期再会。


☆猜你喜欢☆

Excel VBA 这样酷炫的日期控件,你不想要吗?

Excel 公式函数/数据透视表/固定资产折旧计提表!

Excel VBA 自定义函数/数组字段定位/数组字段排序

Excel 功能/公式函数/VBA/多种姿势处理重复值

Excel VBA 最简单的收发存登记系统

Excel 公式函数/查找函数之LOOKUP

Excel VBA 文件批量改名

Excel 公式函数/数据验证/动态下拉列表

Excel VBA 输入逐步提示/TextBox+ListBox

Excel 基础功能【数据验证】,你会怎么用?


本文于2023年5月17日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

举报
评论 0