专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
Excel之家ExcelHome  ·  REGEXP函数,基础用法请收好 ·  6 天前  
Excel之家ExcelHome  ·  Excel中的翻译函数,130多种语言互译 ·  5 天前  
完美Excel  ·  宜昌二马路 ·  5 天前  
Excel之家ExcelHome  ·  这样保护你的数据,一般人想不到 ·  1 周前  
51好读  ›  专栏  ›  完美Excel

改进OFFSET函数

完美Excel  · 公众号  · Excel  · 2024-10-06 07:50

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:OFFSET函数INDEX函数

OFFSET函数非常灵活,它可以指向不同大小的单元格区域,实现动态计算。如下图1所示的示例,如果将单元格I1中的值由2改为3,那么OFFSET函数的第四个参数将确保单元格区域扩展到包括3列数据。

1

从图1中可以看出,单元格F2中使用了公式:

=AVERAGE(OFFSET(B2,0,0,1,$I$1))

下拉至单元格F6

虽然OFFSET函数灵活有用,但很多人不喜欢使用这个函数,因为它是一个易失性函数。如果你在一个与OFFSET函数所在公式完全无关的单元格中输入一个数字,即使该单元格与I1B2无关,但所有的OFFSET函数都会进行计算。大多数时候,Excel只是花时间计算需要计算的单元格,然而一旦引入了OFFSET函数,所有与OFFSET函数相关的单元格,都会在工作表中的每次更改后进行计算。这对于包含有大量公式和数据的工作表来说,会显著降低工作表的速度。

下图2所示,使用了INDEX函数来代替OFFSET函数。

2
在单元格F2中使用了公式:

=AVERAGE(B2:INDEX(B2:E2,$I$1))

下拉至单元格F6

注意,公式中INDEX函数的前面有一个冒号。通常来说,INDEX函数将从单元格中返回该单元格的数值。但是,当在INDEX函数的任一侧放置冒号时,它就返回单元格的地址,因此上例中会得到B2:C2。是不是很有意思!

这很重要,因为INDEX函数是非易失函数,可以获得OFFSET函数的灵活性,而无需一次又一次进行无意义且耗时的重新计算。


欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。