现在有免费的精英会计交流群,每天前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不加班,作者:卢子