☆本期内容概要☆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 功能/公式函数/VBA/多种姿势处理重复值Excel VBA 最简单的收发存登记系统Excel 公式函数/查找函数之LOOKUPExcel VBA 文件批量改名Excel 公式函数/数据验证/动态下拉列表Excel VBA 输入逐步提示/TextBox+ListBoxExcel 基础功能【数据验证】,你会怎么用?本文于2023年5月17日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注
(图片来源网络,侵删)
0 评论