说起OFFSET函数,真的是像雾像雨又像风,从复杂的数据汇总、到数据透视表再到高级动态图表,都离不开OFFSET函数的默默付出。
通过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函数的基本用法,其实她还有特别多更加复杂的引用方式,需要咱们一点点的学习领悟。只要功夫深,金箍棒也能磨成针。