Excel OFFSET Function
The Excel OFFSET function returns a reference to a range constructed with five inputs: (1) a starting point, (2) a row offset, (3) a column offset, (4) a height in rows, (5) a width in columns. OFFSET is handy in formulas that require a dynamic range.
- reference - The starting point, supplied as a cell reference or range.
- rows - The number of rows to offset below the starting reference.
- cols - The number of columns to offset to the right of the starting reference.
- height - [optional] The height in rows of the returned reference.
- width - [optional] The width in columns of the returned reference.
The Excel OFFSET function returns a dynamic range constructed with five inputs: (1) a starting point, (2) a row offset, (3) a column offset, (4) a height in rows, (5) a width in columns.
The starting point (the reference argument) can be one cell or a range of cells. The rows and cols arguments are the number of cells to "offset" from the starting point. The height and width arguments are optional and determine the size of the range that is created. When height and width are omitted, they default to the height and width of reference.
For example, to reference C5 starting at A1, reference is A1, rows is 4 and cols is 2:
=OFFSET(A1,4,2) // returns reference to C5
To reference C1:C5 from A1, reference is A1, rows is 0, cols is 2, height is 5, and width is 1:
=OFFSET(A1,0,2,5,1) // returns reference to C1:C5
Note: width could be omitted, since it will default to 1.
It is common to see OFFSET wrapped in another function that expects a range. For example, to SUM C1:C5, beginning at A1:
The main purpose of OFFSET is to allow formulas to dynamically adjust to available data or to user input. The OFFSET function can be used to build a dynamic named range for charts or pivot tables, to ensure that source data is always up to date.
Note: Excel documentation states height and width can't be negative, but negative values appear to have worked fine since the early 1990's. The OFFSET function in Google Sheets won't allow a negative value for height or width arguments.
The examples below show how OFFSET can be configured to return different kinds of ranges. These screens were taken with Excel 365, so OFFSET returns a dynamic array when the result is more than one cell. In older versions of Excel, you can use the F9 key to check results returned from OFFSET.
In the screen below, we use OFFSET to return the third value (March) in the second column (West). The formula in H4 is:
=OFFSET(B3,3,2) // returns D6
In the screen below, we use OFFSET to return the last value (June) in the third column (North). The formula in H4 is:
=OFFSET(B3,6,3) // returns E9
Below, we use OFFSET to return all values in the third column (North). The formula in H4 is:
=OFFSET(B3,1,3,6) // returns E4:E9
Below, we use OFFSET to return all values for May (fifth row). The formula in H4 is:
=OFFSET(B3,5,1,1,4) // returns C8:F8
Below, we use OFFSET to return April, May, and June value for the West region. The formula in H4 is:
=OFFSET(B3,4,2,3,1) // returns D7:D9
Below, we use OFFSET to return April, May, and June value for West and North. The formula in H4 is:
=OFFSET(B3,4,2,3,2) // returns D7:E9
- OFFSET only returns a reference, no cells are moved.
- Both rows and cols can be supplied as negative numbers to reverse their normal offset direction - negative cols offset to the left, and negative rows offset above.
- OFFSET is a "volatile function" – it will recalculate with each worksheet change. Volatile functions can make larger and more complex workbooks run slowly.
- OFFSET will display the #REF! error value if the offset is outside the edge of the worksheet.
- When height or width is omitted, the height and width of reference is used.
- OFFSET can be used with any other function that expects to receive a reference.
- Excel documentation says height and width can't be negative, but negative values do work.