
本文于2023年4月6日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!
关于Excel查找函数,我们已介绍过VLOOKUP(Excel 公式函数/查找函数之VLOOKUP),LOOKUP(Excel 公式函数/查找函数之LOOKUP),INDEX+MATCH(Excel 公式函数/查找函数之INDEX+MATCH),我们今天来聊聊OFFSET+MATCH。
OFFSE,它的意思是"偏移",我们先来看下它的用法:OFFSET 函数在 Excel 中用于返回一个基于给定参考点的单元格或范围。这个参考点可以是单元格或范围,而不能是某个具体的单元格地址(表示地址的文本)。公式示例:
=OFFSET(reference, rows, cols, [height], [width])
reference 是必需的参数,它是一个单元格或范围,它是要偏移的参考点。
rows 是必需的参数,它是偏移量的行数。可以是正数(表示向下偏移)或负数(表示向上偏移),也可以是0,表示包括参考点。
cols 是必需的参数,它是偏移量的列数。可以是正数(表示向右偏移)或负数(表示向左偏移),也可以是0,表示包括参考点。
height 是可选的参数,它指定返回范围的高度。如果省略,则假定高度与 reference 相同。
width 是可选的参数,它指定返回范围的宽度。如果省略,则假定宽度与 reference 相同。
OFFSET 函数返回一个从 reference 开始的新范围。新范围的大小由 height 和 width 参数指定,如果省略这些参数,则使用与 reference 相同的大小。
OFFSET查找功能举例:
=OFFSET($A$1,MATCH($H2,$A$2:$A$125,0),MATCH(I$1,$B$1:$E$1,0))

该公式表示从数据源最左上单元格开始,通过MATCH函数计算偏移量,后面的参数省略,我们得到与编码对应的名称、数量等信息。
它跟INDEX有点像,但含义是显著不同的。
OFFSET的常用方法是返回一个单元格区域,例如:
{=OFFSET($A$1,0,0,10,5)}
从数据源最左上单元格开始,行列偏移量都为0,返回一个10行,5列的单元格区域。不过,这种固定返回行、列的应用范围是有限的,通常需要结合其他函数来使用,比如:
这种用法,常用于定义名称,得到一个动态的数据区域,比如我们在前面定义的名称"库存商品明细表":

利用OFFSET函数结合COUNTA函数来实现对库存商品明细表数据区域的动态引用,随着数据的增加、删除,这个区域会跟着动态变化,非常实用。公式中最后一个参数“5”,也可以用COUNTA函数来处理,只不过我在演示的时候,第5列之外还有数据,这个引用就不准确了。
这里顺便提一下,COUNTA函数用来计算非空单元格数量,如果源数据是从A1开始,那么正好是我们源数据的行数。
OFFSET函数在数据验证功能中,常用来定义动态下拉列表,也是非常方便、非常实用的,具体可参见前文Excel 公式函数/数据验证/动态下拉列表。
好,今天我们就分享到这里,我们下期再会。
本文使用 文章同步助手 同步,本文于2023年4月6日首发于本人同名公众号:Excel活学活用,更多文章敬请关注!