我先来解释第二个,IF函数那个吧。
请注意,这个函数是在B1单元格输入的。
首先要理解MOD(ROW(),3)=1这个判断条件
(1)MOD是余数函数,这个判断条件的意思是:如果所在行与3相除的余数为1
即,如果行数是4,那么就是MOD(4,3)=1,则判断条件成立
如果行数是6,那么MOD(6,3)=0,则判断条件不成立。
所以,在这个条件成立的时候,判断函数IF会取第一个值,即“单行表头工资明细!A$1”。从你发的文件上来看,1这行指的是表头,即“姓名”、“时间”这些项目名。
所以,在生成的新表中,第1行,第4行,第7行……(这些行与3相除的余数都为1),都会生成表头。
(2)而如果这个条件不成立,则第二个IF函数进行继续判断
如果余数为2(第2行、第5行、第8行……),会进行定位函数OFFSET(单行表头工资明细!A$1,ROW()/3+1,0)
这个函数的意思是,以A1单元格为参考值,向下取ROW()/3+1的值,由于2/3,5/3和8/3这样的值都是不足1,2,3的,因此要补一个1上去,所以ROW()/3+1的值,应该是1,2,3……
即新表的B2单元格,以A1为标准,向下取1行,得到原表的A2。
而新表的D5单元格,以D1为标注,向下取2行,得到原表的C3。
(3)如果前面两个条件都不成立,则余数为0,也就是说第3行,第6行,第9行……,根据函数,则得到空值,所以这一行都会变为空行。
这样就得到了那个新表。
CHOOSE函数的原理和这个差不多,前面MOD(ROW(),3)+1是判断条件,后面是按照前面等于1,等于2,等于3的三个结果。
在新表的第3行,第6行,MOD(ROW(),3)+1会等于1,所以输出是空值
在新表的第1行,第4行,MOD(ROW(),3)+1会等于2,所以输出的是表头
在新表的第2行,第5行,MOD(ROW(),3)+1会等于3,所以输出是OFFSET函数,还是定位的一个值。
写了这么多,希望能够帮到你哦!
1. =CHOOSE(MOD(ROW(),3)+1,“”,单行表头工资明细!A$1,OFFSET(单行表头工资明细!A$1,ROW()/3+1,))
其中:
MOD(ROW(),3)+1 就是公式所在单元格的行数mod 3之后+1,如:公式在A3,结果是“1”,在A4,结果为“2”;A5,结果为“3”;A6,结果为“1”,1 2 3 1 2 3一直循环……
单行表头工资明细!A$1:不知道你的表格具体的单元格是什么内容;
OFFSET(单行表头工资明细!A$1,ROW()/3+1,):结果就是根据a1列一直偏移ROW()/3+1个单位,不知道你的表格具体的单元格是什么内容,所以也很难说是什么。
但可以确认的是:假如a1=1,a2=2,a3=3……,则公式在对应行向下拖结果是:2 2 3 3 3 4 4 4 5 5 5 6 6 6……一直循环,应该是姓名循环吧?
choose() :就是根据公式所在的单元格的行数确定这个函数的结果,
从第3行开始,第3,6,9……每隔3行,结果为“”(空白);
第4,7,10……每隔3行,结果为“单行表头工资明细!A$1”;
第5,8,11……每隔3行,结果为“OFFSET(单行表头工资明细!A$1,ROW()/3+1,)”
另外一个也类似的。楼主最好发附件,不然比较难解析给你听。
还有不明可以百度hi我~