咱们说说这个OFFSET函数的作用,微软的帮助文件是这样描述的:
以指定的引用为参照系,通过给定偏移量返回新的引用。
瞧瞧,这么简单的几句话,让人家怎么能猜透你的心思嘛。
这个函数有5个参数:
第一个参数是基点
第二个参数是要偏移几行,正数向下,负数向上。
第三个参数是要偏移几列,正数向右,负数向左。
第四个参数是新引用几行。
第五个参数是新引用几列。
如果不使用第四个和第五个参数,新引用的区域就是和基点一样的大小。

如果使用下面这个公式:
=OFFSET(C3,4,2,4,3)
就是以C3为基点,向下偏移4行,向右偏移2列,新引用的行数是4行,新引用的列数是3列,最终得到对E7:G10单元格区域的引用。

当然,仅仅得到引用是没啥用处的,咱们的目的是把OFFSET函数得到的引用作为一个半成品,再通过其他方法进行再加工。
这么说还是有点抽象啊,再来一个形象一点的:
OFFSET函数就像是一个鬼子小分队,从据点董家庄(C3)出动,顺着大路向南走4里(C7)

拐弯儿再向东2里,这时候就到马家河子(E7)了

鬼子队长说了,我要以马家河子(E7)这个地方开始,再占领一片地盘。有多大呢?向南4里,向东3里。

吆西,结果就是E7:G10单元格区域了。

简单认识了OFFSET函数,咱们再用一个动态图表的制作,来说说OFFSET函数的实际应用。
OFFSET函数和动态图表之间,属于是“见不得人”的关系。
所谓动态图表,就是能根据指定的条件,自动变化图表数据源,使图表能够按照我们指定的规则,动态显示数据中的重点关注部分。
说“见不得人”,是指不能在图表中直接使用OFFSET函数,而是要将OFFSET函数先定义成名称,然后在图表中使用自定义名称作为数据源。
看下面这个题目:
这个销售流水记录中,每天都要不断的添加数据。现在要制作一个图表,仅展示最近7天的销售状况。

首先,在【公式】选项卡下,单击【定义名称】,分别定义两个名称:
日期=OFFSET($A$1,COUNT($A:$A),0,-7)
销售额=OFFSET($B$1,COUNT($A:$A),0,-7)

说说定义名称日期这个公式的意思:
COUNT函数对A列数值计数,结果作为OFFSET函数的行偏移参数。
OFFSET函数以A1为基点,向下偏移的行数是COUNT的结果,也就是A列有多少个数值,就向下偏移多少行。
这时候就相当于到了A列数值的最后一行,给定的偏移列数是0,新引用的行数是-7,得到从A列数值的最后一行开始,向上7行这样一个动态的区域。
如果A列的数值增加了,COUNT函数的计数结果就增加了,OFFSET函数的行偏移参数也就随之变化。
就相当于一竿子捅到底,然后来个烧鸡大窝脖儿,向上引用7行,所以得到的始终是最后7行的引用。

接下来,按下图步骤插入一个柱形图。

右键单击数据系列,选择数据源

设置数据系列的系列值为:
=Sheet2!销售额
这里的Sheet2,是数据源工作表的名称。销售额,就是定义的名称。
设置轴标签的区域为:
=Sheet2!日期
OK了,以后我们只要不断的在数据源表格中添加数据,这个图表就始终显示的是最近7天的数据变化了。
最后别忘了,再对图表进行简单的美化,收工了——
今天只是讲了OFFSET函数的基本用法,其实她还有很多更加复杂的引用方式,需要咱们一点点的学习领悟。只要功夫深,金箍棒也能磨成针

 

分享一个利用OFFSET做的三级联动的示例:数据有效性的二级联动_三级联动)