又一个强大的引用函数offset,高手必学。
之前我们学过的引用函数有index,indirect,今天我们学另一个强大的引用函数offset。它的意思是以指定的引用为参照系,通过给定偏移量返回新的引用。
-01-
函数说明
它的结构写法如下:
Reference:必需。要以其为偏移量的底数的引用。引用必须是对单元格或相邻的单元格区域的引用;否则OFFSET 返回错误值 #VALUE!。说白了,就是以它为基准点。
Rows:必需。需要左上角单元格引用的向上或向下行数。Rows可为正数(这意味着在起始引用的下方)或负数(这意味着在起始引用的上方)。以参考区域左上角单元格为基准,向下或向上偏移的行数。
Cols:必需。需要结果的左上角单元格引用的从左到右的列数。Cols可为正数(这意味着在起始引用的右侧)或负数(这意味着在起始引用的左侧)。行偏移后,向右或向左偏移的列数。
Height:可选。需要返回的引用的行高。Height必须为正数。行列偏移后,扩展的行数。
Width:可选。需要返回的引用的列宽。Width必须为正数。行列偏移后,扩展的列数。
注意:
如果 rows 和 cols 的偏移使引用超出了工作表边缘,则OFFSET返回错误值 #REF!。
如果省略 height 或 width,则假设其高度或宽度与 reference 相同。
offset(参考区域,偏移行数,偏移列数,扩展行数,扩展列数)
由于offset 返回的结果是引用,可以与任何需要引用参数的函数一起使用。
-02-
示例解释
如下图所示,在I1单元格种输入公式=OFFSET(A1,3,2,3,3)。意思是以A1单元格为起始位置,向下偏移3行,到A4;再向右偏移2列,到了C4;最后在扩展3行3列,形成C4:E6这个区域的引用。可以在编辑栏按F9查看公式的结果。
当公式为=OFFSET(A1:C1,3,2,3,3)时,发现结果还是一样。可以自行按F9查看。说明只以参考区域的左上角单元格为偏移的基准。
当公式为=OFFSET(A1:C1,3,2,1,)时,返回的引用为C4:E4。意思是以A1单元格为基准,向下偏移3行到A4;再向右偏移2列到C4;然后扩展1行几列呢?第5参数省略,就返回第1参数这个区域的列数。
当公式为=OFFSET(A1:C2,3,2)时,返回的引用为C4:E5。意思是以A1单元格为基准,向下偏移3行到A4;再向右偏移2列到C4,然后扩展的行列是多少呢?第4和5参数都省略时,就返回第一参数的行数和列数。
-03-
具体应用
1.求每个人1月到随机月的总和。
I1单元格设置数据有效性,序列为B1:G1,可以在1月到6月之间任意选择。当选择3月时,自动求出每个人1月到3月的总和。I2单元格公式为=SUM(OFFSET(B2,,,,MATCH(I$1,B$1:G$1,))),向下填充即可。
解释一下,offset以B2单元格为参照基准,行列都不偏移,扩展行忽略,为第一参数的行数,也就是1行,扩展列数是动态变化的。当选择3月时,就扩展3列。扩展的列数用了match函数,为的是动态查找。
左表我设置了条件格式,当I1选择了3月,左表的1月到3月就会自动变红。是不是挺有趣的。
好了,今天说了offset这个引用函数的原理和基础用法,你都学会了吗?其实它还有其他的用法,比如多维引用。