Excel 应用OFFSET函数调整新的引用

OFFSET函数的功能是以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。其语法如下。


OFFSET(reference,rows,cols,height,width)

其中参数reference作为偏移量参照系的引用区域。rows为相对于偏移量参照系的左上角单元格,上(下)偏移的行数。cols为相对于偏移量参照系的左上角单元格,左(右)偏移的列数。height为高度,即所要返回的引用区域的行数,必须为正数。width为宽度,即所要返回的引用区域的列数,必须为正数。

【典型案例】以指定的引用为参照系,通过给定偏移量得到新的引用。本例的原始数据如图15-25所示。

步骤1:在A2单元格中输入公式“=OFFSET(B2,2,3,1,1)”,用于显示E4单元格中的值。

步骤2:在A3单元格中输入公式“=SUM(OFFSET(C3:E5,-2,0,3,3))”,用于对数据区域“C1:E3”求和。

步骤3:在A4单元格中输入公式“=OFFSET(C3:E5,0,-3,3,3)”,返回错误值“#REF!”,因为引用区域不在工作表中。计算结果如图15-26所示。

图15-25 原始数据

图15-26 计算结果

Excel 在未排序且大小不定的区域里查找值:OFFSET函数

如果需要在一个未排序且大小不定的区域里查找值,可通过OFFSET和MATCH函数实现。OFFSET函数的语法为:=OFFSET(reference,rows,cols,[height],[width]),各参数的含义介绍如下。

※ reference:作为偏移量参照系的引用区域。Reference必须为对单元格或相连单元格区域的引用;否则,OFFSET返回错误值#VALUE!。

※ rows:相对于偏移量参照系的左上角单元格,上(下)偏移的行数,行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。加入使用5作为参数Rows,则说明目标引用区域的左上角单元格比reference低5行。

※ cols:相对于偏移量参照系的左上角单元格,左(右)偏移的列数,列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。假如使用5作为参数Cols,则说明目标引用区域的左上角的单元格比reference靠右5列。

※ height:表示高度,即所要返回的引用区域的行数,为可选项。Height必须为正数。

※ width:表示宽度,即所要返回的引用区域的列数,为可选项。Width必须为正数。如果行数和列数偏移量超出工作表边缘,函数OFFSET返回错误值#REF!。如果省略height或width,则假设其高度或宽度与reference相同。

下面以查找成绩表中奖牌为“季军“的选手比赛成绩为例,操作如下。

01 打开比赛成绩表,选中“B11”单元格,在其中输入查询条件,即需查询成绩的奖牌,本例输入“季军”。

02 选中需要显示结果的单元格,在其中输入公式:=OFFSET (A1,MATCH(“季军”,C2:C7,0),1),然后按下“Enter”键确认,即可得到奖牌为“季军”的选手成绩。

alt

Excel 调整引用:OFFSET函数实例图解

OFFSET函数的功能是以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域,并可以指定返回的行数或列数。其语法如下:


OFFSET(reference,rows,cols,height,width)

其中,reference参数作为偏移量参照系的引用区域。rows参数为相对于偏移量参照系的左上角单元格,上(下)偏移的行数。cols参数为相对于偏移量参照系的左上角单元格,左(右)偏移的列数。height参数为高度,即所要返回的引用区域的行数,必须为正数。width参数为宽度,即所要返回的引用区域的列数,必须为正数。下面通过实例详细讲解该函数的使用方法与技巧。

打开“OFFSET函数.xlsx”工作簿,切换至“Sheet1”工作表,本例中的原始数据如图16-32所示。要求根据工作表中的数据内容,以指定的引用为参照系,通过给定偏移量得到新的引用。具体操作步骤如下。

STEP01:选中A2单元格,在编辑栏中输入公式“=OFFSET(B2,2,3,1,1)”,用于显示E4单元格中的值,输入完成后按“Enter”键返回计算结果,如图16-33所示。

图16-32 原始数据

图16-33 A2单元格返回结果

STEP02:选中A3单元格,在编辑栏中输入公式“=SUM(OFFSET(C3:E5,-2,0,3,3))”,用于对C1:E3数据区域进行求和,输入完成后按“Enter”键返回计算结果,如图16-34所示。

STEP03:选中A4单元格,在编辑栏中输入公式“=OFFSET(C3:E5,0,-3,3,3)”,输入完成后按“Enter”键返回计算结果,因为引用区域不在工作表中,工作表中会显示计算结果为错误值“#REF!”,如图16-35所示。

图16-34 A3单元格返回结果

图16-35 A4单元格返回结果

是否能用VLOOKUP函数获得检索列左侧的数值?

VLOOKUP 函数下,无法取得检索列左侧的数值

VLOOKUP 函数可以说是 Excel 中最重要的函数,这里让我们再来看看其具体的公式和功能。

【公式】

=VLOOKUP(检索值,检索范围,列数,0)

【功能】

在检索范围最左一列中查找与检索值相同的单元格,然后在该单元格中返回第三参数指定的列数中的某个单元格的值。

“从检索范围的最左边的列返回到第三参数指定的列数中的某个单元格的值”,也就是“返回位于该列右侧的值”。

那么,问题就来了。

“难道无法直接用这一列左侧的数值吗?”

“给第三参数做减法导出数值就可以了吧?”或许有许多人都抱有这样的疑问。但答案是:“不可以”。

那么,如果想要获得位于检索列左侧的列中的数值,应该怎么办?

什么是 OFFSET 函数

组合使用 OFFSET 函数与 MATCH 函数可以解决前文中的问题。OFFSET 函数的本质是“确定作为基准的单元格,通过上下左右偏移得到新的区域的引用”。

【公式】

=OFFSET(基准单元格,偏移行数,偏移列数)

【功能】

是以基准单元格为起始,返回按移动行数、移动列数偏移的单元格的值。

偏移行数,正数表示向下,负数表示向上。

偏移列数,正数表示向右,负数表示向左。

首先,举个非常简单的例子。

➊ 在 Excel 工作表的单元格 C3中输入“100”。

➋ 将下列公式输入任意一个单元格。

=OFFSET(A1,2,2)

输入有上述公式的单元格,将返回“100”。

作为基准单元格的 A1,向下2行、向右2列的目标单元格是 C3(值为100)。所以输有此公式的单元格所返回的值就是100。

将 OFFSET 函数与 MATCH 函数组合

运用这个公式,想办法引用检索列左侧的单元格。

下列表格我们可以看到,按照单元格 E2的数字,在 F2、G2的“课程”和“单价”中会分别对应返回数据。首先,先在 E2里输入1。

首先,F2的“课程”十分简单,通常使用 VLOOKUP 函数就能处理。

=VLOOKUP(E2,B:C,2,0)

在单元格 F2中输入=VLOOKUP(E2,B:C,2,0)后取得“课程”数据

但是,单元格 G2的“单价”数据位于单价的检索列(B 列)的左侧,这样用 VLOOKUP 函数就无法处理了。

这时候,我们可以组合使用 MATCH 函数和 OFFSET 函数。为了导出 E2中“No.”所对应的单价数据,G2中要输入以下公式:

=OFFSET(B1,MATCH(E2,B:B,0)-1,-1)

在单元格 G2中输入=OFFSET(B1,MATCH(E2,B:B,0)-1,-1)

以单元格 B1为基准,作为第二参数的结果的数字向下、再向左移动1格的目标单元格数值将会出现在 G2中。

第二参数的 MATCH 函数,会查找单元格 E2的值位于 B 列的上数第几列。单元格 E2的值若为1,B 列内容为1的单元格位于第2行,因此 MATCH 函数导出结果为“2”。在这个例子中,以单元格 B1为基准的 OFFSET 函数直接嵌入 MATCH 函数中,由于 B1向下偏移数为2,产生了1格的误差,所以需要做出调整,在此基础上减去1。

在 OFFSET 函数中,可以将第二参数的移动行数、第三参数的移动列数指定为负数值。也就是说,可以引用位于基准单元格的上方、左侧的单元格。利用这一特性,可以解决 VLOOKUP 函数无法引用位于检索列左侧单元格的缺陷。