Sincair Dict

Things do not change, we do.

0%

Excel函数-OFFSET

OFFSET函数在Microsoft说明中的描述为:

返回对单元格或单元格区域中指定行数和列数的区域的引用。 返回的引用可以是单个单元格或单元格区域。 可以指定要返回的行数和列数。

我在有需求把下图左侧这样统一格式,同一纵列的数据,按照下图右侧这样输出,可以方便比对同一科目的数据,通过搜索我发现了如下函数可以实现这一目的。

1
=OFFSET($B$2,(ROW()-1)*5+COLUMN(A:A)-1,)


这个函数可以这样理解:
从B2单元格开始,ROW()返回当前行数,COLUMN(A:A)返回1,那么在第1行任意单元格键入该函数,ROW()返回1,相当于OFFSET($B$2,0,0)返回B2自身,向右拖动单元格时,A:A变成B:B,COLUMN(B):B)返回2,相当于OFFSET($B$2,1,0)返回B3,向下拖动单元格时,ROW()返回2,相当于OFFSET($B$2,5,0)返回B7,依次类推。

至此我的目的是实现了,但函数实际语法还是不清楚,为了方便使用,需要了解一下这个OFFSET函数。

OFFSET函数的语法是:OFFSET(reference, rows, cols, [height], [width])
Reference:要基于偏移量的引用。 引用必须引用单元格或相邻单元格区域;否则,OFFSET返回#VALUE!错误值。
Rows:需要左上角单元格引用的向上或向下行数。使用5作为rows参数,可指定引用中的左上角单元格为引用下方的5行。
Rows 可为正数(这意味着在起始引用的下方)或负数(这意味着在起始引用的上方)。
Cols:需要结果的左上角单元格引用的从左到右的列数。
高度:需要返回的引用的行高。Height必须为正数。
宽度:需要返回的引用的列宽。Width必须为正数。

示例1:

1
=OFFSET($B$2,2,0)

如下图示例,G4单元格的函数“=OFFSET($B$2,2,0)”指的是取从B2单元格开始,向下2行,向右0列的单元格的值。
示例1

示例2:

1
=OFFSET(B2,0,0,3,2)

加上后面两个可选参数的话,需要更改一下原始数据,如下图,E2单元格键入的函数“=OFFSET(B2,0,0,3,2)”指的是从B2单元格开始,向下0行,向右0列,取3行2列的值,会发现只是在E2单元格输入函数,但E2:F5单元格都出现了对应的值。
示例2

示例3:

1
=OFFSET($A$2,COLUMN(A1)-1,ROW(A1)-1)

回到一开始的问题,如下图,在E2单元格键入函数“=OFFSET($A$2,COLUMN(A1)-1,ROW(A1)-1)”中,$A$2相当于固定起始位置,COLUMN(A1)返回1,ROW(A1)返回1,E2单元格返回A2单元格开始,0行0列的值,即“=OFFSET($A$2,0,0)”。
随着拖拽,右边F2单元格中A1变为A2,即“=OFFSET($A$2,1,0)”,右边E3单元格中A1变为B1,即=OFFSET($A$2,0,1),以此类推。
示例3

以上,关于OFFSET的记录。