How to Subtract the Previous Value from the Current Value in Google Sheets

Published on

I prefer the MAP lambda helper function to other LHFs to code a formula to subtract the previous value (row above) from the current row value in Google Sheets.

Other LHFs include SCAN or BYROW, but the advantage of MAP is we can use multiple arrays.

How do the multiple arrays come in use in this type of calculation?

It will help us when we want to subtract the current row value from the previous row value based on a group column.

We will start with one-column data, which means the grouping is not involved. So we can use either of the said LHFs. Here we go!

Subtracting the Previous Value from the Current Value

In the following screenshot, you can see data spread across several columns. The sample data is in columns B and C.

Columns E and G contain the output of two lambda formulas.

Subtracting the Previous Value from the Current Value

We will start with the data in column C and the result in column G.

I want an array formula to subtract the C2 value from C3 (=C3-C2), the C4 value from C3 (=C4-C3), and so on.

Now see the result in G2:G11, where I’ve used the following array formula in cell G2.

Formula_1 (Map):

={0;map(C3:C11,lambda(r,r-indirect("C"&row(r)-1)))}

The formula subtracts the previous value from the current value row by row.

Feel free to replace the function MAP with BYROW. The rest of the formula, including the LAMBDA, is the same.

Formula_2 (Byrow):

={0;byrow(C3:C11,lambda(r,r-indirect("C"&row(r)-1)))}

But if you use SCAN, you must use it as follows.

Formula_3 (Scan):

={0;scan(,C3:C11,lambda(a,r,r-indirect("C"&row(r)-1)))}

How do these formulas work?

In the formulas, r = current_value, and indirect("C"&row(r)-1) = previous_value.

How Can We Open the Range from C3:C11 to C3:C?

The solution is to find the relative position of the last non-blank cell in column C.

The following formula will do that in Google Sheets.

=ArrayFormula(MATCH(2,1/(C3:C<>""),1))

Then use INDEX to offset that many rows one by one.

So what you want to do is replace C3:C11 with C3:index(C3:C,last_non_blank_cell).

You can remove ArrayFormula while doing so, as it’s not necessary within INDEX.

So, here is the formula to subtract the previous value from the current value in an open range in Google Sheets.

={0;map(C3:index(C3:C,match(2,1/(C3:C<>""),1)),lambda(r,r-indirect("C"&row(r)-1)))}

Subtracting Value from Row above by Group

In addition to the “Amount” column, we will consider the “ID” column too here.

The purpose is to subtract the value from the row above by group.

Please see the range B2:C11 and the output in E2:E11 in the screenshot above.

We require a sorted table.

In the above example, I’ve sorted the table (range) by ID; the group by column.

Here is the E2 formula to subtract the value from the row above by group in Google Sheets.

={0;map(B3:B11,C3:C11,lambda(_,r,if(countif(B2:_,_)=1,0,r-indirect("C"&row(r)-1))))}

How does this formula differ from formula_1 above?

Please see the highlighted part.

Here is the logic behind subtracting the current value from the cell above by group.

Generic Formula: if(running_count_of_occurrence_of_group_column_values=1,0,formula_1)

We can do all this within one MAP formula. That’s what the E2 formula does.

The red highlighted part will return the running count of the occurrence of the IDs.

The countif(B2:_,_) part is specifically for returning the running count of the occurrence of the IDs.

You May Like: Get the Count of Consecutive Occurrences of Values in Google Sheets.

Prashanth KV
Prashanth KV
Your Trusted Google Sheets and Excel Guide Prashanth KV brings a wealth of experience in Google Sheets and Excel, cultivated through years of work with multinational corporations in Mumbai and Dubai. As a recognized Google Product Expert in Docs Editors, Prashanth shares his expertise through insightful blogging since 2012. Explore his blog for practical tips and guidance on maximizing your spreadsheet skills.

Hierarchical Numbering Sequences in Excel

Creating hierarchical numbering sequences in an Excel spreadsheet can significantly improve the way you...

How to Easily Repeat a Sequence of Numbers in Excel

Excel offers multiple ways to accomplish tasks, and the simplicity of each approach depends...

Create a Sequence of Dates at Every Nth Row in Excel (Dynamic Array)

Would you like to create a sequence of dates in every nth row in...

XMATCH Row by Row: Finding Values Across a Range in Google Sheets

Using the BYROW function with XMATCH in Google Sheets allows us to match values...

More like this

XMATCH Row by Row: Finding Values Across a Range in Google Sheets

Using the BYROW function with XMATCH in Google Sheets allows us to match values...

Limit Formula Expansion to a Specific Row in Google Sheets

In this tutorial, I’ll explain how to limit the expansion of an array formula...

3-D Referencing Structured Data Tables in Google Sheets

When you have several tables within a single sheet—not across multiple sheets in a...

1 COMMENT

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.