作业帮 > 综合 > 作业

=IF(MOD(ROW(),3),OFFSET(工资表!$A$1,(MOD(ROW()-1,3)>0)*ROUND(RO

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 01:42:30
=IF(MOD(ROW(),3),OFFSET(工资表!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,),COLUMN(A1)-1),""),请详解逻辑
IF函数懂吧,条件为真就显示第一个结果,假就显示后面一个结果
条件是:MOD(ROW(),3).ROW()返回当前行的行号,就是说当前行只要不是3的倍数就显示OFFSET(工资表!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,),COLUMN(A1)-1)这一块的结果,否则显示为空白
最后再说这个逻辑真的表达式:OFFSET(工资表!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,),COLUMN(A1)-1).OFFSET是要返回引用的,引用目标是工资表!$A$1,即“工资表”里的A1单元格,(MOD(ROW()-1,3)>0返回结果只有true(1)或FALSE(0),当(MOD(ROW()-1,3)为FALSE时即当前行号为3n+1时,OFFSET返回的引用行偏移量为0;当(MOD(ROW()-1,3)为TRUE时,ROW()返回值只有3n+2,3n时最外面的IF就FALSE了.此时OFFSET的行偏移量就是ROUND(ROW()/3,).另外列的偏移量为COLUMN(A1)-1)等于0
总结,当前行只要是3的倍数的即3n行的,显示结果为空;3n+1行时显示的值为工资表!$A$1里的值;3n+2行时,显示的值为工资表A列往下偏移ROUND(ROW()/3,)行对应的值
好辛苦打了半天,不知道你明白了没.
再贴一个我快递表格公式里用的,嘿嘿
=IF(L2=0,E2,IF(I2="","",IF(AND(NOT(ISERROR(FINDB(I2,price!$A$13))),L2price!$A$11),(L2-1)*price!$E$13+price!$D$13,IF(AND(NOT(ISERROR(FINDB(I2,price!$A$14))),L2price!$A$11),(L2-1)*price!$E$14+price!$D$14,"else"))))))