一个经典例子,带你了解OFFSET函数的运用

2019-04-11 10:40:41 0 0

现在有免费的精英会计交流群,每天前150名进群免费,与众多优秀财务人一起讨论业务、交朋友!进群加微信号kjsc020


听故事学OFFSET函数。


卢子有三个朋友:无言、安安、胖纸,朋友间就得互相来往。每个朋友的距离都挺远,卢子住在潮州,无言离卢子最近,在汕头那边,安安次之在深圳,胖纸最远在东莞。同属广东,坐车半天内都能到。

                            

假如OFFSET函数就是卢子的车,要如何去到每个朋友哪里?


有人说过OFFSET函数会轻功,那速度当然不比车子慢。先来看看语法:

=OFFSET(起点,偏移行,偏移列,行高,列宽)


注:行高、列宽为可选参数。


卢子要去无言那边,只需向右坐2站就到。

=OFFSET(A1,0,2)


如果要去安安那边,只需向下坐5站才能到。

=OFFSET(A1,5,0)


去胖纸那边就稍微麻烦点,要向下坐6站,再向右坐1站才能到。

=OFFSET(A1,6,1)


看到这里大概知道OFFSET函数是干嘛用的,如果偏移的行数为正数就是向下偏移,偏移的列数为正数就是向右偏移。相反,如果偏移的行数为负数就是向上偏移,偏移的列数为负数就是向左偏移。


假如卢子现在在胖纸家里,想要回到自己的家。就得向上坐6站,就是-6,向左坐1站,也就是-1。

=OFFSET(B7,-6,-1)


既然知道怎么去,就得知道怎么回,卢子还不至于路痴到忘记回来的路。


安安跟胖纸离得很近,卢子想知道她们两家合并的范围有多大,也就是深圳跟东莞的范围。卢子就得先到安安这里,然后将这里的行高设置为2,列宽设置为2,这样就知道这两地的范围。

=OFFSET(A1,5,0,2,2)


但这个只是划分个范围,没有统计,统计可以用COUNTA,得到这两地的范围为4。

=COUNTA(OFFSET(A1,5,0,2,2))


知识扩展:


OFFSET函数有两个经典的案例:隔行引用、动态引用。


1、根据销售明细表,获取每个季度的销售情况。


在D2输入公式,并向下和向右复制。

=OFFSET(A$1,4*ROW(A1),0)


季度的数据在第5行、第9行、第13行和第17行,也就是每个数据都隔着4行。这时只要构架一个相差4的等差序列,然后进行偏移获取即可。ROW函数可以获取行号,下拉就得到1、2、3、4。行号再乘以4就是得到相差4的等差序列,也就是4*ROW就得到4、8、12、16,最后在第1行进行偏移,就获取了相对应的值。


2、数据透视表是非常强大的统计工具,但直接根据数据源创建透视表后,当数据源新增加数据的时候,并没有自动统计进去。如何才能动态获取一个数据源,这样当数据源新增加的时候,数据透视表也能自动更新区域。


这个借助OFFSET函数定义一个动态区域的名称,然后数据透视表引用这个动态名称即可解决。


Step 01 切换到“公式”选项卡,单击“定义名称”,在弹出的“新建名称”对话框,名称的文本框输入:动态区域,引用位置文本框输入下面的公式,单击“确定”按钮。

=OFFSET(动态引用!$A$1,,,COUNTA(动态引用!$A:$A),6)


数据源从A1开始不需要偏移行列,也就是第2、3参数都是0(用逗号占位也代表0),行高不确定,用COUNTA函数统计非空的单元格就获取行高,列宽为6列。这样就用OFFSET函数获取了一个动态区域。


Step 02 插入“数据透视表”,在弹出的“创建数据透视表”对话框,更改表/区域为:动态区域,选择放置数据透视表的位置为现有工作表,位置:动态引用!$H$1,单击“确定”按钮。


Step 03 重新布局数据透视表,当数据源更新数据后,刷新数据透视表,就能自动统计。


现在有免费的精英会计交流群,每天前150名进群免费,与众多优秀财务人一起讨论业务、交朋友!进群加微信号kjsc020


来源:Excel不加班,作者:卢子