上次小编给各位东奥学员讲了一个与批量填充有关的小技巧,这次,小编给大家分享一个利用Excel函数功能针对财务工作中经常遇到的工资条进行制作的技巧,在讲解的过程中,大家可能会发现小编用了不同的函数进行组合来实现最终的目标,为了让大家能跟上讲解学习的步骤,小编会针对每个用到的函数进行下讲解,逐步带领大家在生成工资条的过程中,熟悉掌握一些在平日工作中比较有用的函数,并建立起一种如何有效运用Excel函数的思维,好了,如若想了解的话,那就跟我来学下吧。
一、分析功能需求
我们这篇文章的数据源如下所示:
我们如果想利用Excel将工资表直接生成工资条,第一步就是分析要实现的功能需求:
1、生成的工资条,每行数据都要有一个同样的标题行;
2、为防止裁切时,因裁切不准导致影响数据的阅读,故应在每个人工资条与工资条之间,加上一个适当宽度的空行;
3、工资条与工资条之间,唯一不同的内容取自数据源工资表里每个人的工资数据;
二、精炼函数
有了需求,我们就可以对照需求寻找可以实现该功能的函数公式;
1、工资条与工资条之间的空白,我们可以将其视为一个空行;
2、Excel如要生成工资条,工资条数据以行为单位,同时以三行为一个循环反复生成,其中:第一行是标题行,第二行是个人工资数据,第三行是空白间隔行;
3、我们选择第一个函数,就是choose(X,Y1,Y2,Y3)函数,这个函数的作用就是,根据第一个参数X的值,来对应选择后面不同的参数值,如果X=1,则返回参数Y1,如果X=2,则返回参数Y2,以此向后可以设置最多有254个后续参数供选择;我们利用这个函数的特性,将参数X采用公式生成一个长度为3的数据循环,让后面跟着的三个参数Y1、Y2、Y3,数据输出分别对应工资条循环里的第一行标题行、第二行个人工资数据行、第三行空白间隔行;
4、接下来,需求进一步分解为针对参数X要通过公式实现其输出数值为以1、2、3为循环的需求A,以及针对参数Y2要通过公式实现对工资表每行个人工资数据提取的需求B,其中:
需求A,可以使用MOD(X,Y)函数来实现,这个函数是取余函数,如果我们想实现1、2、3为循环,则可以用函数MOD(ROW(3:3),3)来定义参数X,当我们在工资条区域输入公式后,向下、向右拖拉单元格填充生成工资条时,内部的ROW(3:3)函数会根据拖拉行数的增加,以3为起始值,步长为1进行递增,通过外层的取余函数,我们可以得到一个以0为起始值,在0、1、2之间进行的循环;由于我们要的参数X需要实现1、2、3之间的循环,才能取到后面的Y1、Y2、Y3,故在MOD(ROW(3:3),3)后面,需要再加上一个1,才能完整的实现需求A;
需求B,可以使用OFFSET(X,Y,Z)函数来实现,这个函数的作用是以参数X代表的单元格起始区域最左上角单元格开始,向下移动Y个单元格、向右移动Z个单元格后定位的新单元格区域;我们可以看到,工资表里每个人的工资数据位置相对第一行标题行位置,是以行数1为单位逐行向下移动的。如果我们将起始位置定位在标题行最左侧A2单元格位置,那么当我们在A2单元格输入公式并向下、向右拖拉填充公式时,工资条区域每向下延伸3行为一个人的工资条数据,则对应的工资表数据源向下延伸1行为一个人的工资表数据,也即以工资表标题行最左侧的A2为起始单元格,工资条区域每向下拖动3个单元格距离,工资表区域向下移动1个单元格距离,这里我们用A2来代表 OFFSET(X,Y,Z)函数里的参数X,表示从A2开始偏离,用INT(ROW(1:1)/3+1)函数来代表OFFSET(X,Y,Z)函数里的参数Y,表示生成一个以1为起始值,每拖拉延伸3行数值参数Y就增加1的一个序列,以省略参数Z代表相对列不偏移,以便完整的实现需求B;
三、函数组合
根据以上所述,我们整理出工资条区域最左上角单元格的公式,该公式可填写在任一单元格中,如下所示:=CHOOSE(MOD(ROW(3:3),3)+1,A$2,OFFSET(A$2,INT(ROW(1:1)/3+1),),””)
其中红色的函数MOD(ROW(3:3),3)+1是choose(X,Y1,Y2,Y3)函数里第一个参数X,用来随着工资条区域单元格拖动自动填充时,在其后的三个参数中循环取值,其中:
参数Y1是A2,即当choose(X,Y1,Y2,Y3)函数第一个参数X循环输出值为1时,将工资表最左上角A2单元格的内容循环填充到工资条当前单元格内,同时利用$符 锁定A2位置中的行,使得向下拖拉时,每次都是取当前行次的标题栏数据;
参数Y2是OFFSET(A$2,INT(ROW(1:1)/3+1),),即当choose(X,Y1,Y2,Y3)函数第一个参数X循环值为2时,也即当工资条区域每次循环到每个工资条第二行数据时,从工资表区域以A2单元格为基准向下移动对应行次的距离进行取数;
参数Y3是””,即当choose(X,Y1,Y2,Y3)函数第一个参数X循环值为3时,也即当工资条区域每次循环到每个工资条第三行数据时,以空值进行填充,形成裁切空白区域行;
四、总结
1、理解choose(X,Y1,Y2,Y3)函数的作用,可以根据不同情况选择不同结果,相对常用的If(X,Y,Z)函数更直观;
2、理解MOD(X,Y)函数的作用,可以生成循环数据;
3、理解row(1:1)函数,可以随着拖动行次填充自动累加生成数列;
4、理解OFFSET(X,Y,Z)函数,可以在原有单元格区域X的位置基础上,向下、向右移动Y、Z个单元格定位一个新的单元格位置,该函数还有两个后续参数,对应新区域的行和列数,本例中没有用到;
5、理解单元格锁定行、列、行与列对拖动填充的影响。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!