Table of contents
今天,我想向你介绍 Excel的OFFSET函数 有3个现实生活中的例子。
首先,我将描述公式的语法,然后我将谈论如何使用OFFSET函数来解决实际生活中的问题。
简介
OFFSET函数可以返回一个单元格(姑且称为目标单元格)或区域(目标区域)的引用,该单元格或区域距离另一个单元格(参考单元格)或区域(参考区域)有一定数量的行和列。
下图说明了如何使用OFFSET函数来返回对一个单元格(左边部分)或一个范围(右边部分)的引用。
它将给你一个直观的印象,什么是目标单元,什么是参考单元。
绿色突出显示的单元格是目标单元格,而黄色突出显示的单元格是由目标范围组成的。
蓝色突出显示的单元格是参考单元格。
图一
OFFSET在Excel(语法)中是什么意思?
以下是偏移函数的语法。 关节 (reference, rows, cols, [height], [width])
参考资料 | 需要。 参考是指一个单元格或单元格范围,从这个单元格开始偏移。 请注意,如果你指定一个单元格范围,这些单元格必须彼此相邻。 |
行数 | 需要 行数,向上或向下,参考单元格或参考范围的左上角单元格。 行数 看看图1的左边部分,如果我把函数改为OFFSET(C3, -1, -1),目标单元格将是B2。 B2在C3的上面一行。 |
Cols | 需要。 参考单元格或参考范围的左上角单元格的左边或右边的列数。 如同 行数 参数,其值为 Cols 如果我们将B4设置为参考单元格,将C3设置为目标单元格,我们如何编写OFFSET函数? 答案是OFFSET(B4, -1, 1)。 这里你可以看到Cols是正数,C3在B4的右边一列。 |
高度 | 可选。 只有当目标是一个范围时才使用Height参数。 它告诉我们目标范围包括多少行。 Height必须是一个正数。 你可以从图1的右边部分看到,目标范围中有两行。 因此,在这种情况下,我们将Height设置为2。 |
宽度 | 可选。 如果目标是一个范围(见图1的右边部分),只使用Width参数。 它表示目标范围包含多少列。 宽度必须是一个正数。 |
好了,现在让我告诉你如何使用OFFSET函数来解决实际生活中的问题。
案例1:通过结合OFFSET和MATCH函数进行从右到左的查询
众所周知,你只能用VLOOKUP函数进行从左到右的查询。
要搜索的值必须放在你的表格数组的第一列中。
如果你想增加一个新的查询值,你必须将整个表的范围向右移动一列,或者如果你想使用另一列作为查询值,你需要改变你的数据结构。
但通过将OFFSET与Match功能结合在一起,可以消除VLOOKUP功能的限制。
什么是MATCH函数,我们如何将OFFSET函数与Match函数结合起来进行查找?
那么,Match函数在一个单元格范围内搜索一个指定的项目,然后返回该项目在该范围内的相对位置。
让我们以图2.1(显示不同国家在不同年份的收入)中的B3:B8范围为例。
公式"=MATCH ("USA", B3:B8, 0)" 将返回 1 因为美国是范围内的第一个项目(见单元格B10和C10)。
对于另一个范围C2:F2,公式"=MATCH(2015,C2:F2,0)"返回 3 因为2015年是范围内的第三个项目(见单元格B11和C11)。
再回到OFFSET功能。
如果我们将B2单元格设为参考单元格,将E3单元格设为目标单元格,我们如何编写OFFSET公式?
E3是 1 B2以下的行和 3 栏目右侧至B2。
因此,公式可以写成"=OFFSET(B2.C)"。 1 , 3 )",仔细观察红色的数字,你能发现它们是匹配的吗?
这就是问题的答案--如何将OFFSET函数与Match函数结合起来--。 匹配函数可以应用于作为OFFSET函数的第二个或第三个参数 (见C13单元)。
单元格C14展示了如何使用VLOOKUP函数来检索相同的数据。
在编写VLOOKUP函数之前,我们必须知道2015年的收入记录在表格阵列B2:F8的第4列。
这意味着我们在使用VLOOKUP函数时,必须对数据结构非常了解。
这是VLOOKUP的另一个限制。 然而,通过使用MATCH函数作为OFFSET函数的参数,我们不需要知道列的索引。
如果有很多列,这非常有用。
图2.1
现在让我们继续,看看一个更复杂的例子。
假设我们有一个包含不同公司的公司名称、联系人姓名和电子邮件地址的表。
我们想从已知的联系人姓名中获取公司名称,或从已知的电子邮件地址中获取联系人姓名。 我们能做什么?
见图2.2,单元格B5:E8包括公司信息,通过在单元格C2和单元格B3中输入信息,在红色方块公式的帮助下,如果我知道联系人姓名,我就可以检索到公司名称。
范围D2:E4显示了如何获得一个已知电子邮件地址的联系人姓名。
综上所述,这两个例子说明我们可以进行从右到左的查找,而且查找值不需要放在最右边的列中。 表数组中的任何列都可以包含查找值。
图2.2
案例2:结合OFFSET和COUNT函数进行自动计算
在介绍每当我们在一列中添加一个新的数字时如何自动计算之前,让我们先从如何自动返回一列中的最后一个数字开始。
假设我们想得到B列的最后一个数字,公式是"=OFFSET(C2.C)"。 9 ,0)",如果我们应用OFFSET函数。
从公式中,我们可以知道, 9 是钥匙的编号。
只要我们能自动返回这个数字,我们就能在一列中自动定位最后一个数字。
9 是指C列中包含数字的单元格的数量。
如果你熟悉COUNT函数,你会知道COUNT函数可以计算一个范围内包含数字的单元格的数量。
例如,公式"=COUNT (C3:C11) "将计算单元格C3至C11中包含数字的单元格数量。
在我们的案例中,我们想知道一整列有多少个数字,因此,应该使用像C:C这样包括C列所有行的引用。
请看G4和H4单元格,由"=COUNT(C:C) "返回的数字正好等于 9 .
因此,通过在上述OFFSET函数中用COUNT(C:C)代替9,我们可以得到一个新的公式"=OFFSET(C2.C)"。 COUNT(C:C) ,0)"(在单元格H5)。
它返回的数字是87000,正好是C列的最后一个数字。
假设我们想得到C列中所有数字的总和,现在让我们开始自动计算。
该公式将是"=SUM(OFFSET(C2,1,0。 9 , 1))" 如果我们将SUM与OFFSET一起使用。
9 是C3:C11范围内的总行数,也是C列中包含数字的单元格总数。
因此,我们可以用一种新的方式来写公式,如"=SUM(OFFSET(C2,1,0,COUNT(C:C),1))"。
看看G10和H10单元格,这9名员工的工资总数是52.17万美元。
现在,如果你在单元格C12中放入一个类似34,000美元的数字,单元格G5和G10中的数字都将分别变为34,000美元和555,700美元。
这就是我所说的自动化,因为你不需要更新G5或G10单元格中的公式。
当你使用COUNT函数时,你必须小心,因为COUNT函数只返回包含数字的单元格数量。
例如,"=COUNT(B:B)"返回0而不是9,因为B列中没有包含数字的单元格(见G3和H3单元格)。
D列包括10个含有数字的单元格,"COUNT(D:D)"返回的数字也是10。
但如果我们想像对C列那样检索D列的最后一个数字,我们将得到数字0(见G8和H8单元格)。
很明显,0不是我们想要的,怎么了? D13单元格离D2单元格有11行,而不是10行。
这也可以通过公式"=OFFSET(D2,COUNT(D:D))"来证明。 + 1 ,0)"在单元格G7。
总之,如果我们想把COUNT函数和OFFSET函数一起使用,实现计算的自动化,数字应该是相邻的。
图3
案例3:使用OFFSET函数来做一个动态范围
假设我们想绘制一家公司的月度销售量图表,图4.1显示了当前数据和基于当前数据创建的图表。
每个月,最近一个月的单位销售额将被添加到C栏最后一个数字下面。
有没有一种简单的方法来自动更新图表?
更新图表的关键是使用OFFSET函数为销售单位栏创建动态范围名称。
随着新数据的输入,单位销售的动态范围将自动包括所有销售数据。
图4.1
要创建一个动态范围,点击 公式 选项卡,然后选择 名字经理 或 定义名称 .
下图 新名称 对话框会提示,如果你点击了 定义名称 .
如果你选择 经理姓名 ,你还需要点击 新的 使得下面的 新名称 对话框出现。
图4.2
在" 名称。 "输入框中,应填写动态范围的名称。 而在" 指的是:" 输入框中,我们需要输入OFFSET公式"=OFFSET(Figure4!$C$2, 1, 0, COUNT(!$C: $C), 1)",它将根据C列中输入的单位销售值产生一个动态范围的值。
默认情况下,一个名称将适用于整个工作簿,并且在工作簿中必须是唯一的。
然而,我们想把范围限制在一个特定的工作表。
因此,我们在这里选择图4中的" 范围。 "在点击了 认可 ,动态范围就产生了。
随着新数据的输入,它将自动包括所有销售数据。
现在,右键点击图表中的任何一点,然后选择 "选择数据"。
图4.3
在提示的 选择数据 来源,选择 系列1 然后 编辑。
图4.4
然后输入"=Figure4!Units",如图4.5所示。
图4.5
最后,让我们试一试,在单元格C13中输入11,你可以看到图表发生了变化,数值11已经被包含在内。
当有新数据加入时,图表会自动改变。
图4.6
阅读更多...
- Excel中的Offset(...)函数及示例
下载工作文件
从以下链接下载工作文件。
Excel-Offset-Function.rar