=IF(MOD(ROW(),3),OFFSET(sheet1!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()⼀3,),COLUMN(A1)-1),"")

2025-06-26 18:04:54
推荐回答(1个)
回答1:

首先看if函数的逻辑测试(logical_test)是MOD(row(),3),意思是当前所在单元格返回的行号除以3的余数,所以这个逻辑测试值返回的数字只有3个分别是1,2,0,而excel中只有当返回值是0的时候系统判断逻辑测试(logical_test)是false,所以当返回值是0时,这个if函数返回的值是“”(空),意思是只要是行号是3的倍数的此行为空;如果返回值是1,2,则此if函数逻辑测试(logical_test)是true,返回值是嵌套的offset这个函数所引用的参数。而在OFFSET(sheet1!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,),COLUMN(A1)-1)这个里面,比较难以理解的也就是offset函数偏移的行号问题,(MOD(ROW()-1,3)>0)这个其实也是个逻辑判断的函数,如果所在行是1,4,7,10,……(3n+1)行,运算过程是mod(row(3n+1)-1,3)=0,0>0?显然返回值是false,即为0,所以(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,)计算结果是0,那么offset函数的引用值则是OFFSET(sheet1!$A$1,0,0)=sheet1!$A$1结果为sheet1中A1单元格的值;同理如果所在行是2,5,8,……(3n+2)行,运算过程是mod(row(3n+2)-1,3)=1,1>0,所以返回值是true即为1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,)的计算结果是1*round(row(3n+2)/3/,)=n,那么offset函数的引用值则是OFFSET(sheet1!$A$1,n,0)=n,即计算结果是sheet1中第A(n+1)个单元格中的值
综上所述,这个函数所表达一共三种情况第一,如果所在行是3n行,返回值是”“(空);第二种情况是所在行为3n+1行,返回值固定为sheet1!中的A1单元格 因为是绝对引用;第三种情况所在行为3n+2行,返回值为sheet1中的第A(n+1)个单元格中的参数
还有值得一提的是在ROUND(ROW()/3,)中,省略了一个”0“,表示取整数