对勾函数(value函数)

offset函数很常用的查找与引用函数,它以指定的引用为参照系,通过给定偏移量返回新的引用(一个单元格或单元格区域) 。
语法:OFFSET(reference, rows, cols, [height], [width])
OFFSET 函数语法具有下列参数:
Reference 必需,基准点 。
必须为对单元格或相连单元格区域的引用;
否则,OFFSET返回错误值 #VALUE! 。
Rows 必需 。以基准点为依据偏移的行数 。
行数可为正数(代表在起始引用的下方)
或负数(代表在起始引用的上方) 。
Cols 必需 。以基准点为依据偏移的列数 。
列数可为正数(代表在起始引用的右边)
或负数(代表在起始引用的左边) 。
【对勾函数(value函数)】Height 可选 。高度,即所要返回的引用区域的行数 。
正数向下返回,负数向上返回 。
Width 可选 。宽度,即所要返回的引用区域的列数 。
正数向右返回,负数向左返回 。
如果省略了Height 、Width,则返回的宽高与Reference相同 。
需要注意的是:
OFFSET不会移动或改变任何单元格,它返回的只是一个区域的引用 。
如果 rows 和 cols 的偏移使引用超出了工作表边缘,则 OFFSET 返回,错误值#REF! 。

图1中的G4单元格中的12是如何得来的?我们从其中的公式可以看出,B4为基准点,然后行方向偏移2(向下偏移2行),列方向偏移1(向右偏移1列),则新的基准点为C6,图中蓝色单元格,然后以C6位基准点,要求行数为-3(向上返回3),列数为2(向右返回2),返回的引用区域为:C4:D6,所以sum对C4:D6区域求和得到1+1+2+2+3+3=12 。




对勾函数(value函数)

文章插图
图1
图2中的H5单元格中的3.5又是如何得来的?我们从其中的公式可以看出,C4:D5为基准点,然后行方向偏移3(向下偏移3行),列方向偏移2(向右偏移2列),则新的基准点为E7,然后以E7为基准点要求函数为1行,列数为2列(负数代表向左返回2列),最终返回的引用区域为:D7:E7,图中填充黄色单元格标注的 。用AVERAGE对其求平均数得到(2+5)/2=3.5 。




对勾函数(value函数)

文章插图
图2
看到这里可能有人会问在什么情况下才能用到offset函数?
我们来看下面的两个例子:
1、制作工资条
图3是某公司12月份工资表




对勾函数(value函数)

文章插图
图3
要求生成图4所示的工资条




对勾函数(value函数)

文章插图
图4
先不论其他生成工资条的方法,我们用函数公式完成时就需要用到offset函数 。
我们新建一个工作表命名为工资条,在工资条工作表的A1单元格中输入公式
=IF(MOD(ROW(),3),
OFFSET('12月工资表'!$A$3,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,0),COLUMN(A3)-1,),
"") 然后填充即可 。


含义:mod(row(),3)的余数为0时(逻辑值为假),行数为3的倍数,即能整除3的行为空行,返回if函数的第三个参数空值” ”
Mod(row(),3)的余数为1、2时(逻辑值为真),返回if函数的第二个参数
OFFSET('12月工资表'!$A$3,(MOD(ROW()-1,3)>0)*ROUND(ROW()/3,0),COLUMN(A3)-1,)
if函数的第二个参数是offset函数,我们分析其含义:
以12月份工资表A3为基准点,分别向行列方向偏移 。
当行数为1、4、7、10(以3递增)……时,(MOD(ROW()-1,3)>0)=0,行偏移为0,列偏移colunm((A3)-1) 。得到1、4、7、10……行填充的是12月份工资表第三行的工资列标题 。
当行数为2、5、8、11(以3递增)……时,(MOD(ROW()-1,3)>0)=1,行向下偏移1、2、3、4……,列偏移为colunm((A3)-1),填充的是每个员工的工资记录 。
2、 制作动态图
图5左边是数据区域,显示为每月的销售额,这个数据是动态变化的,因为每月都要不断更新数据,要求在右边制作一个图表,显示最近3个月的销售额 。




对勾函数(value函数)

文章插图
图5
以左边的数据区域为数据源,生成图表,然后我们需要对图表的横坐标标签引用区域和纵坐标的值进行设置 。这时我们需要offset函数返回一个新的引用区域,然后定义成新的名称 。
定义2个名称:
月份=OFFSET(Sheet1!$A$1,COUNTA(Sheet1!$A:$A)-1,0,-3,1)
销售额==OFFSET(Sheet1!$B$1,COUNTA(Sheet1!$B:$B)-1,0,-3,1)
含义:counta函数是计算非空单元格个数,再减去1,作为offset函数基准点向下偏移的行数,然后再以新的准点向上返回3行,列数为1 。对于上图中名称月份返回的是A13:A15,销售额显示的是B13:B15,如果数据发生动态变化,分别返回的始终是最近3个月的月份和销售额 。
插入选项卡,选择插入一个簇状柱形图,然后选择数据源,如图6所示 。
我们将横坐标标签引用区域设置为月份,纵坐标的值设置为销售额 。按确定按钮,动态图表设置完成,最终显示如上图5效果 。




对勾函数(value函数)

文章插图
图6
对于offset函数,他有很多复杂的引用用法,让我们在以后的学习中慢慢学习它吧!