Excel:排班表查询

2025-07-15 16:16:23

1、从数据图中很容易看出很有规律,A列是日期,从1开始到31日结束(不要纠结2月31号)第一行是月,每月占三列,分别是 三个班次,第二行就是班次了!白班(8点-16点)中班(16点-24点)夜班(0点-8班)

Excel:排班表查询

2、数据源看到了,规则也弄清楚了,那就来看要求了!其实要求很简单,B列给定一个日期和时间,C列求出对应班组!从这要求来看,我们可以用查找类函数,vlookup,index,lookup,当然还可以使用offset为什么不用vlookup?因为它的出场费太高,咱请不起,所以找出场费相对较低的offset函数降低点成本吧!(其实是因为列数太多,全装进vlookup,会影响效率!)

Excel:排班表查询

3、先来认识一个OFFSET函数吧怎么样,这函数的提示看起来好不好理解?其实它就是一个偏移函数,给它一个基点,再告诉他偏移多少行,偏移多少列然后它就能给你返回另一个单元格引用了(注意描述文字中的顺序哟!)在这里它的用法如下:Offset(基点,偏移行数,偏移列数)

Excel:排班表查询

4、PS:这里只描述了3个参数,如果要返回一个区域,可以用上第4和第5参数哟!好啦,函数的功能也知道了,既然说到了是偏移,它会有基点(起点),那就把这基点设置为排班表中A2单元格了

Excel:排班表查询

5、第一个参数设置好了,那第二个参数偏移行数又怎么设置呢?从数据源里看出来了,A列就是日期中的天(日),数字1到31,正好能用上!所以我们可以使用day(b3)来返回日期中的天(日)用作offset函数的参数2(如果参数1不设置为a2,那这里还需要做一个加减法运算,不然位置就跑偏了)

Excel:排班表查询

6、第二个参数设置好了,那第三个参数呢?偏移列,在第一行能看到,每3列为一个月既然有day可以取出天(日),那就有month可以取出月

Excel:排班表查询

7、这里光取出来还没用,还得做矩阵运算,这样才能保证每月能移动3列所以参数三得是 month(b3)*3到这里还没完,这一步只是实现了每月跳3列!还没实现取出对应班次数据呢!在这里知道了它会偏移三列到D列,那我们接着看白班在D列的左边第二列,所以在减2列才对中班在D列的左边第一列,所以在减1列才对夜班的就不用减了,可为了统一运算那就减0吧,为了方便了解清楚结构,咱还是建个数据关系区吧!

Excel:排班表查询

8、注:此表G列按时间必须按升序排序,否则结果出错!

Excel:排班表查询

9、关系表建好以后,就可以请出大明星vlookup了,还得墨迹一下,时间中按时来区分班别的,那这个时也正好有个英语单词叫Hour(这世上巧合的事情不多,遇到了就一定要盯紧),所以用它来算出小时,再用vlookup去查找,再返回要减去的数字就OK了!公式如下:VLOOKUP(HOUR(B3),$G$2:$H$4,2)

Excel:排班表查询

10、=OFFSET(排班表!$A$2,DAY(B3),MONTH(B3)*3+VLOOKUP(HOUR(B3),$G$2:$H$4,2))C3写好以后,双击填充就好啦!!!

Excel:排班表查询

11、个人建议最终效果如图所示。

Excel:排班表查询
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢