EXCEL函数:在上学的时候,对word、excel、PPT感觉都很简单,稀里糊涂的学,稀里糊涂的忘,然后走向工作岗位的时候,突然发现这三大宝剑无比锋利,可惜自己太菜,曾经努力学习,但是效果不理想,直到这几年上多媒体的课,才发现原来学习的途径不单单是理论与实践结合,其实更好的办法是如何把你学习的知识传到出去,这即加深自己对知识的理解,还能更灵活的变通,今天用一个例子去介绍几个函数的使用。
作者:vivi,来源:osinnovation
1 故事背景
今天有个用户说,在执行数据操作的时候,系统做删除操作的时候,上一条的数据不会定界,SAP HCM有个知识点叫做时间约束,一共有三类:
1 记录必须连续且不能有间隔
2 数据可以中断,但是不能重复
3 数据可以中断可以重复
如果做删除的操作,时间约束是2的是不会把上一条数据修改成9999-12-31,只有时间约束是1才会把数据修改成9999-12-31,所以要有此功能必须把时间约束是2的调整成1。因为是已经上线的项目,所以就要考虑修改存在的风险,修改这个有几个风险。
① 因为时间约束1最后一条的数据是不能删除,所以需要和客户讨论存不存在这样的业务场景。
② 要看看历史数据是不是存在中间有间隔的数据,比如有个业务场景,如果上级经理离职,如果2改成1,那么即使离职也还是要保持原有和上级经理的关系,因为时间约束是1的不能中断。(今天excel分析的就是中间有中断的数据)
现在我们需要找出哪些员工的数据是有中断的 ,这里用下面几个函数组合来,快速找到中断的数据
用的函数是IF、INDEX、row三个,if是做判断用的,就是看上一行ID与下一行的id是否一样,INDEX是获取单元格的值,row是获取单元格的行数。
=IF(B2=INDEX(A:B,ROW(B2)+1,2),INDEX(A:G,ROW(B2)+1,7)-INDEX(A:G,ROW(B2),6),"ERROR")
这个组合公式大致的含义是:B2=INDEX(A:B,ROW(B2)+1,2 找到本行与下一行的数据是不是一样的
INDEX(A:G,ROW(B2)+1,7)-INDEX(A:G,ROW(B2),6)用下一行的开始日期-上一行的结束日期,看看是不是等于1,如果等于1说明数据是连续的,如果不等于1,说明数据是不连续的。