当数据按如图方式存储时,若需要将每组数据中的对应项单独提取出来进行比较,数据量少时可以逐行复制,但当数据量庞大时,逐行复制的工作量太大。
Offset 函数
在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。
语法
=OFFSET(reference,rows,cols,height,width)
即=OFFSET(参考单元格或单元格区域,偏移行,偏移列,高度,宽度)
- reference (必填)作为偏移量参照系的引用区域。reference 必须为对单元格或相连单元格区域的引用;否则,函数 OFFSET 返回错误值#VALUE!。
- rows(必填)相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数 Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。
- cols (必填)相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数 Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
- height高度,即所要返回的引用区域的行数。Height 可以为负,-x表示当前行向上的x行。
- width宽度,即所要返回的引用区域的列数。Width 可以为负,-x表示当前行向左的x列。
注意
- 如果行数和列数偏移量超出工作表边缘,函数 OFFSET 返回错误值 #REF!。
- 如果省略 height 或width,则假设其高度或宽度与 reference 相同。
- 函数 OFFSET 实际上并不移动任何单元格或更改选定区域,它只是返回一个引用。函数 OFFSET 可用于任何需要将引用作为参数的函数。
示例
公式 | 说明 |
---|---|
=OFFSET(C3,2,3,1,1) | 返回单元格 F5 中的值 |
=SUM(OFFSET(C2,1,2,3,1)) | 对区域 E3:E5 求和 |
=SUM(OFFSET(C3:E5,-1,0,3,3)) | 对数据区域 C2:E4 求和 |
=OFFSET(C3:E5,0,-3,3,3) | 返回错误值 #REF!,因为引用区域不在工作表中 |
每隔几行提取一行
以上图为例,提取B列的姓名、语文成绩。
例1、提取姓名
需以B2单元格为参照系,每隔5行提取一次数据,即分别向下移动0行、5行、10行、15行、20行、25行。使用(ROW()-2)*5构造0、5、10、15、20、15的等差数列。
公式:=OFFSET(B2,(ROW()-2)*5,0)
将鼠标放在“张三”单元格右下角,按住 + 符号往下拖,可实现快速填充公式的功能。
例2、提取语文成绩
以B3单元格为参照系,每隔5行提取一次数据,使用(ROW()-2)*5构造0、5、10、15、20、15的等差数列。
公式:=OFFSET(B3,(ROW()-2)*5,0)
在姓名列公式填充完成的情况下,填充语文成绩时,可将鼠标放在第一个成绩94单元格的右下角,直接双击 + 符号,(无需拖动鼠标)即可实现一键填充公式的功能。
其中,ROW()函数的功能为返回公式所在单元格的行号
在本例中ROW()-2是在E2、F2单元格中,就是2-2=0。括号()中也可以填入单元格名称,例ROW(E2)-2。