永发信息网

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

答案:2  悬赏:10  手机版
解决时间 2021-04-06 10:07
  • 提问者网友:龅牙恐龙妹
  • 2021-04-05 10:25
=IF(MOD(ROW(),3),OFFSET(sheet1!$A$1,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,),COLUMN(A1)-1),"")
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-04-05 10:58
首先看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“,表示取整数
全部回答
  • 1楼网友:旧脸谱
  • 2021-04-05 12:28
ROW:返回引用的行号,用法:ROW(reference)如果省略 reference,则假定是对函数 ROW 所在单元格的引用。MOD:返回两数相除的余数。用法:MOD(被除数,除数)MOD(ROW(),3) :3除以行号的余数,返回三个数:1,2,0 如果求余数大于零,执行OFFSET,否则单元格的值为空字符 OFFSET的用法:OFFSET(reference,rows,cols,height,width),如果省略 height 或 width,则假设其高度或宽度与 reference 相同。Rows 相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数 Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。Cols 相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数 Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯