1.准备知识
row()反回当前单元格行号
mod(被除数,除数)反回余数
ROW()反回当前行号
COLUMN()反回当前列号
offset(基准单元格地址,行偏移量,列偏移量)
(MOD(ROW()-1,3)>0) ,是一个逻辑判断,余数为0则为0,大于0则为1
round(number,digits)取整函数
如果 digits 等于 0,则保留0位小数
如果 digits 大于 0,则保留几位小数
如果 digits 小于 0,使小数点左侧的第几位数开始归零
2.思路
从A1单元格开始存放工资条
利用函数组合,来完成对每一个单元格的添充。一张工资条由标题和数据两行组成,完成一张后,空一行,在下一行继续制作另一张工资条,所以要有IF函数判断该处是否为空行
if( , , ) 对if函数来说,非0的数全是‘真’
如果当前行号为3,则此行为空行,否则不是空行
MOD(ROW(),3)
如果为空行,则用空值填充该行单元格
if( , , "")
如果不为空行,则用offset(,,)函数来填充行列单元格
指定offset的基准单元格地址:'12月工资表'!$A$3
注:绝对引用
列偏移量
COLUMN(A3)-1
第一个单元格列偏移0,而COLUMN(A3)获取到的是1
行偏移量
(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,0)
第1部分是标题行的偏移量,第2部分是非标题行的偏移量
第一部分(MOD(ROW()-1,3)>0)使1,4,7,10...行的行编移量为0,保证了标题行的重复出现
在行编移的函数构建中,判断是否为标题行的函数(MOD(ROW()-1,3)>0)和行编移量的函数的第二部分ROUND(ROW()/3,0)通过乘号‘*’相互作用,若是标题行,则第二部分的值不管是多少,都会被0乘成0,若不是标题行,则偏移量至少为1