本帖最后由 ccboxes 于 2016-12-30 11:59 编辑
你还是没看仔细,也没看懂Offset,对行宽和行高的设定只能使用正数,0当然不行。细节不懂和完全不懂是一样的,一定要仔细看,仔细练。
如果你是说这个函数是怎么实现的我数据结构学的不好没法说的太好。
但具体到这个ROW(A1)*3-3上这就是一个简单的嵌套,但这家伙偷懒没有严格按标准格式写,一看就是老油子,这是个非常差劲的习惯,千万不要学。函数应为=SUM(OFFSET(A$1,ROW(A1)*3-3,0,1,3))
首先看他的位置是在Offset函数的ROW位置上,这个位置的作用你应该清楚就是“需要左上角单元格引用的向上或向下行数。”,但是为了实现复制到其他单元格时自动适应,他没有使用具体的数字,而是放了一个算式:ROW(A1)*3-3。这个算式中ROW()的作用是引用括号内地址的行数。
接下来看这个算式在B1格时,ROW(A1)的结果就是1,算式结果就是0,函数为=SUM(OFFSET(A$1,0,,3))。你可以看到这个OFFSET函数是不标准的,实际上(也就是说Excel认为)应为=SUM(OFFSET(A$1,0,0,1,3)),他省略的Cols参数被默认为0,宽度被默认为与A$1宽度相同为1。(这种人真是不负责任)这下你明白了吧。
当你把这个函数“拉”到B2格时,因为A$1中1是绝对引用,所以A$1还是A$1,但A1不是,会被自动改为A2,函数是=SUM(OFFSET(A$1,ROW(A2)*3-3,,3)),同上算法实际是=SUM(OFFSET(A$1,3,,3))也就是=SUM(OFFSET(A$1,3,0,1,3))
逻辑这下你就明白了吧。当这个函数在第N行时,把A列3N-2行到3N行的3个数加起来。
|