How to use the OFFSET function
The OFFSET function returns a reference to a range that is a given number of rows and columns from a given reference.
Table of contents
- OFFSET Function Syntax
- OFFSET Function Arguments
- OFFSET function example
- ROW function and OFFSET function
- OFFSET function returns a reference to a cell range. Explaining row and height arguments.
- SUBTOTAL and OFFSET functions
- Named ranges and the OFFSET function
- Create a cell reference to a cell range
- Get tutorial file
1. OFFSET Function Syntax
OFFSET(reference,rows,columns,[height],[width])
2. OFFSET Function Arguments
reference | Required. A cell reference from which you want to start. |
rows | Required. The number of rows you want to move from the start cell. The number can be positive or negative. |
columns | Required. The number of columns you want to move from the start cell. This argument can also be a positive or negative number. |
[height] | Optional. The number of rows you want to include to the returned reference. Must be a positive number. |
[width] | Optional. The number of columns you want to include to the returned reference. Must be a positive number. |
If [height] and [width] arguments are not used OFFSET function returns a cell reference with the same number of rows and columns as argument reference.
The OFFSET function returns #REF error if the returning cell reference is outside the cell grid.
Examples
In this post, I am going to provide some basic examples to demonstrate how the OFFSET function works. I also show practical examples where I use the OFFSET function.
3. OFFSET Function example
This example uses only the two first arguments in the OFFSET function, row, and column.
B3 is the start cell. 1 row below B3 is B4. 1 column to the right of B4 is C4.
The OFFSET function returns a cell reference to cell C4. Cell C4 contains number 22.
4. Example 2 - Row function and offset function
This example shows that the offset function returns a cell reference.
ROW(reference) returns the row number of a reference. Combining the ROW and OFFSET functions demonstrates that the OFFSET function returns a cell reference.
5. Example 3 - Explaining row and height arguments. OFFSET function returns a reference to a cell range
The Offset function can also return a reference to a cell range. For this to work, you need to enter the formula as an array formula.
Array formula in cell range B9:B10:
The optional arguments height and width are used in this example. The height is 2 and the width is 1, which is 2 cells high and 1 cell wide.
The array formula returns a reference to a cell range with the same width and height as the two last arguments.
5.1 How to enter an array formula
- Select cell range B9:B10
- Press with left mouse button on in formula bar
- Paste array formula to formula bar
- Press and hold CTRL + SHIFT
- Press Enter
- Release all keys.
6. SUBTOTAL and OFFSET functions
This example shows how to determine if a row in an excel defined table is hidden or visible.
Array formula in cell range C7:C9:
The technique is described here by David Hager and John Walkenbach: Excel Experts E-letter
I have written a couple of posts and developed this technique one step further:
- Count unique distinct values in a filtered table
- Extract unique distinct values from a filtered table (udf and array formula)
- Excel table: Filter unique distinct values (array formula)
- Vlookup visible data in a table and return multiple values
7. Named ranges and the OFFSET function
You can use the OFFSET function to create a dynamic named range. First I want to explain what named ranges is and how you can use them.
So what is a named range? You can select a cell or a range and name it. When you enter the arguments in a function you can use the name instead of the corresponding cell reference. Why? This makes it easier to read and understand a function. Compare this function =Sum(C1:C11) to this =Sum(Sales2011). The latter is easier to understand.
What is dynamic named range? It is a cell range that expands automatically when new values are added.
Named range formula:
COUNTA counts the number of cells in a range that are not empty. COUNTA(Sheet5!$B$4:$B$100) returns 3.
OFFSET(Sheet5!$B$4, 0,0,COUNTA(Sheet5!$B$4:$B$100))
becomes
=OFFSET(Sheet5!$B$4, 0,0,3)
and returns a reference to cell range B4:B6.
Read more about named ranges:
Create a dynamic named range in excel
8. Create a cell reference to a cell range
The image above shows a formula that uses two cell references to create another cell ref to a cell range.
The first cell ref is A3, the second cell reference is created by the OFFSET function, and the colon creates a new cell reference pointing to a cell range.
Array formula in cell B3:
Explaining formula in cell B3
Step 1 - Create cell ref
OFFSET(A3,5,0)
returns A8.
Step 2 - Concatenate cell refs
A3:OFFSET(A3,5,0)
returns
A3:A8.
Step 3 - Calculate row numbers based on cell ref
The ROW function returns a number representing the row for a given cell ref, in this case, the cell ref is pointing to a cell range and the formula returns an array of row numbers from 3 to 8.
ROW(A3:OFFSET(A3,5,0))
'OFFSET' function examples
This article demonstrates how to automatically create drop-down lists if adjacent data grows, there are two methods explained here. The […]
Rattan asks: In my workbook I have three worksheets; "Customer", "Vendor" and "Payment". In the Customer sheet I have a […]
Question: I need to calculate how many hours a machine is utilized in a company with a night and day […]
Functions in this article
Functions in 'Lookup and reference' category
The OFFSET function function is one of many functions in the 'Lookup and reference' category.
Excel function categories
Excel categories
One Response to “How to use the OFFSET function”
Leave a Reply
How to comment
How to add a formula to your comment
<code>Insert your formula here.</code>
Convert less than and larger than signs
Use html character entities instead of less than and larger than signs.
< becomes < and > becomes >
How to add VBA code to your comment
[vb 1="vbnet" language=","]
Put your VBA code here.
[/vb]
How to add a picture to your comment:
Upload picture to postimage.org or imgur
Paste image link to your comment.
[…] Offset function […]