Summary

To average the last 5 data points, you can use the AVERAGE function together with the COUNT and OFFSET functions. You can use this approach to average the last N data points: last 3 days, last 6 measurements, etc. In the example shown, the formula in F6 is:

=AVERAGE(OFFSET(C3,COUNT(C:C),0,-5))

Note: a negative value for height won't work in Google sheets. See below for more information.

Generic formula

=AVERAGE(OFFSET(A1,COUNT(A:A),0,-N))

Explanation 

The OFFSET function can be used to construct dynamic rectangular ranges based on a starting reference and given rows, columns, height, and width. The rows and columns arguments function like "offsets" from the starting reference. The height and width arguments (both optional), determine how many rows and columns the final range includes. For this example, OFFSET is configured like this:

  • reference = C3
  • rows = COUNT(A:A)
  • cols = 0
  • height = -5
  • width = (not provided)

The starting reference is provided as C3 the cell above the actual data. Since we want OFFSET to return a range originating from the last entry in column C, we use the COUNT function to count all values in column C to get the required row offset. COUNT counts only numeric values, so the heading in row 3 is automatically ignored.

With 8 numeric values in column C, the OFFSET formula resolves to:

OFFSET(C3,8,0,-5)

With these values, OFFSET starts at C3, offsets 8 rows to C11, then uses -5 to extend the rectangular range up "backwards" 5 rows to create the range C7:C11.

Finally, OFFSET returns the range C7:C11 to the AVERAGE function, which computes the average of values in that range.

With a dynamic range

The example as shown uses a full column reference for the data being averaged for convenience – as more data is added to column C, the formula will continue to work properly, since the reference C:C covers all of column C. However, you can also use a dynamic range like this:

=AVERAGE(OFFSET(C3,COUNT(data),0,-5))

where "data" represents a dynamic named range or a reference to a column in an Excel Table. Both dynamic named ranges and Excel Tables will automatically expand as more data is added, which is critical to this formula. Note the reference given to OFFSET is still in the row before the data starts. 

Excel vs. Sheets

An odd quirk with this formula is that it won't work with Google Sheets, because the OFFSET function in Sheets won't allow a negative value for height or width arguments. Excel documentation also states height or width can't be negative but it appears negative values have worked fine in Excel since the 1990's.

To avoid negative height or width values, you can use a formula like this:

=OFFSET(C4,COUNT(C:C)-5,0,5)

Notice C4 is the starting reference in this case. The general form is:

=AVERAGE(OFFSET(A1,COUNT(A:A)-N,0,N))

where A1 is the first cell in the numbers you want to average.

Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.