天天看点

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

Hi,大家好,有很多的小伙伴在私信提问说一直在说VBA,能否说说Offset函数的使用方法。答案是肯定的,只要有需要就会尽我们的最大努力来满足大家啦!好了话不多说,今天他来了,我们一起来从零开始学习什么是Offset函数。

首先就不得不先说这个函数的语法,语法如下:

OFFSET(reference, rows, cols, [height], [width]),可以明显看到前面三个参数是必须的,后面2个是可选的参数。

其实语法可以这么理解:offset(基点,向下偏移[不含基点],向右偏移[不含基点],向下选中几格[含基点],向右选中几格[含基点]),其中的基点就是reference啦!

具体的解释如图:

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

PS:如果 "行" 和 "cols 偏移" 引用覆盖了工作表的边缘, 则 offset 返回 #REF! ;如果省略 height 或 width,则假设其高度或宽度与 reference 相同;OFFSET 实际上并不移动任何单元格或更改选定区域;它只是返回一个引用。OFFSET 可以与任何期待引用参数的函数一起使用。例如,公式 SUM(OFFSET(C2,1,2,3,1)) 可计算 3 行 1 列区域(即单元格 C2 下方的 1 行和右侧的 2 列的 3 行 1 列区域)的总值。

说了语法,那么现在一起来看看这个函数的基础用法,如下B4:H13为我们源数据区域,在J:K区域为我们写的要求和公式,K列为我们的显示结果。

可能有的小伙伴还是看不太明白这个函数的基础应用,以K5为例说下这个的意思。K5单元格的公式意思是以E8单元格为基点,然后向下偏移-2个单元,通俗说法就是,在E8单元格往上数2个,然后向右移动0个单位,即回返回值33.

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

PS:说下这个函数里面的偏移数字啊,向上为负,向下为正,向右为正,向左为负。

如下这个例子,有兴趣的小伙伴可以看看,其实是非常简单运算,只不过加上数组嵌套了,如果不明白什么是数组的,可以看看这篇文章。

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

现在再说个稍微难一点的例子,如下,在B2:L2和N2:X2区域中找出不重复的值填入B6:Y10,我们得到结果如下所示:

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

这个函数的意思我们简单介绍一下,从里到外, COUNTIF($A2:$X2,$A2:$X2)=1,这个意思就是统计是否有重复的,如果有重复的就不等于1,则执行外层的IF函数。等于则代表没有重复的,则直接将此值提出来,否则值为99. COLUMN(A1),取得列号码,在外层SMALL函数取出第COLUMN(A1)与第几个较小值,然后利用外层TEXT函数进行格式转换,组成一个数组列。怎么样,是不很好理解。

刚刚我们说找出不重复的值,那么反过来,如果想提取重复值,你应该如何处理呢?

函数公式如下,我们就不在介绍了,又不懂的可以在下面进行留言。

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

现在在介绍一个非常有用的处理数据方法,我们有如下的源数据区域,需要将他们进行转置进行处理。这个时候你会说使用自带的转置不就好啦吗?但是使用自带的得不到我们想要的结果。

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

如下为我们通过Excel自带的转置得到的数据,自带的转置就是讲横纵坐标进行交换而已。

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

而我们实际要得到的结果如下:这个的操作就是把源数据的编码和数量进行了汇总操作,是不是很神奇,其实原理是很简单的。

告诉你应该如何玩转Offset函数,别怕,只需要1分钟就学会啦

文件号=OFFSET(A$1,LOOKUP(ROW(A1)-1,SUBTOTAL(9,OFFSET(X$1,,,ROW($1:$8))),ROW($1:$8)),)

单位=VLOOKUP(A14,A:B,2,)

编码=OFFSET(C$1,MATCH(A14,A:A,)-1,(COUNTIF(A$14:A14,A14)-1)*2)

数量=OFFSET(D$1,MATCH(A14,A:A,)-1,(COUNTIF(A$14:A14,A14)-1)*2)

怎么样,小伙伴们,您学会使用使用offset函数的应用了吗?其实这个函数还有很多其他的常规化用法,在下一期我们会说说他在图表数据方面的应用,有不懂的可以给我留言。

如果小伙伴还有其他的想知道或者想了解的,都可以直接先关注我然后在私信我,告诉我们您想知道什么,或者想了解什么,我们会根据你的需要进行扩展的,谢谢大家的支持!