OFFSET函数及其应用

offset函数很常用的查找与引用函数,它以指定的引用为参照系,通过给定偏移量返回新的引用(一个单元格或单元格区域)。

语法:OFFSET(reference, rows, cols, [height], [width])

OFFSET 函数语法具有下列参数:

Reference 必需,基准点。

必须为对单元格或相连单元格区域的引用;

否则,OFFSET返回错误值 #VALUE!。

Rows 必需。以基准点为依据偏移的行数。

行数可为正数(代表在起始引用的下方)

或负数(代表在起始引用的上方)。

Cols 必需。以基准点为依据偏移的列数。

列数可为正数(代表在起始引用的右边)

或负数(代表在起始引用的左边)。

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。


OFFSET函数及其应用

图1

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


OFFSET函数及其应用

图2

看到这里可能有人会问在什么情况下才能用到offset函数?

我们来看下面的两个例子:

1、制作工资条

图3是某公司12月份工资表


OFFSET函数及其应用

图3

要求生成图4所示的工资条


OFFSET函数及其应用

图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个月的销售额。


OFFSET函数及其应用

图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效果。


OFFSET函数及其应用

图6

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


分享到:


相關文章: