What you will build

Build a small invoice tracker whose Balance and Status are calculated from Amount, Paid, and Due. The lesson uses fictional data so every action can be reproduced without real customer information.

Learning objective

Use two spilling array formulas to calculate remaining balances and flag overdue invoices, understand row-by-row alignment across equal-sized ranges, and verify the result when Paid changes.

Prepare the sample data

Open the exact source workbook below and make a copy for practice. The Example tab contains Invoice, Customer, Amount, Paid, and Due sample data. The source still contains demonstration columns from an earlier setup; on your copy, clean F:H as described in Step 1 before entering the new formulas.

HANDS-ON PRACTICE

Practice in your own copy

Make your own Google Sheets copy with the same data, formulas, formatting, filter and frozen header. The original remains unchanged.

Make a Google Sheets copy (access required) ↗View original

Sign in to Google. If the original is not publicly shared, download the full workbook and import it into Google Sheets, or paste the example data into your own sheet.

The Invoice tracker source workbook in Google Sheets with the Example tab and all sample invoice data visible.

Open the exact source workbook in Google Sheets ↗

Work through the example

Step 1: On your copy, keep A:E as the source data. Clear F2:H4, clear the old headers in G1:H1, keep F1 as Balance, and enter Status in G1. The A:G table is then ready for the two new formulas.

The _result workbook after the formula area is cleaned, with Balance in F1, Status in G1, and F2:G4 blank.

Step 2: Select F2 and enter the Balance formula below once. Its results spill through F2:F4 automatically; do not drag the fill handle or copy the formula down.

Balance formula

=ARRAYFORMULA(C2:C4-D2:D4)
The _result workbook with F2 selected, the formula bar showing ARRAYFORMULA(C2:C4-D2:D4), and Balance spilling as 0, 240, and 220.

Step 3: Select G2 and enter the Status formula below once. Its results spill through G2:G4 automatically; do not drag the fill handle or copy the formula down.

Status formula

=ARRAYFORMULA(IF((F2:F4>0)*ISNUMBER(E2:E4)*(E2:E4<TODAY()),"Overdue",""))
The _result workbook with G2 selected, the formula bar showing the complete ARRAYFORMULA, and only invoice I-03 displaying Overdue.

Checkpoint

InvoiceCustomerAmountPaidDueBalanceStatus
I-01Acme Demo5005002026-09-200
I-02North Demo3401002026-10-05240
I-03River Demo22002026-09-25220Overdue

Overdue depends on TODAY at calculation time. In this audit, I-03 is the only invoice that simultaneously has Balance > 0, a valid Due date, and Due earlier than TODAY.

Common mistakes and fixes

If Status is unexpected, confirm Paid is numeric, Due is a real date value, and all condition ranges have the same number of rows. TODAY also means the result can change as the calculation date changes.

Independent practice

Temporarily change D4 from 0 to 220. Confirm F4 changes from 220 to 0 and G4 changes from Overdue to blank; then restore D4 to 0 and verify both results return to their original state.

Key takeaways

  • ✓Balance is calculated row by row as Amount minus Paid.
  • ✓One ARRAYFORMULA in F2 produces all Balance values: 0, 240, and 220.
  • ✓Status is Overdue only when Balance is positive, Due is a valid date, and Due is earlier than TODAY.
  • ✓One ARRAYFORMULA in G2 produces all three Status values, so no drag or copy-down step is needed.
  • ✓Changing Paid automatically updates both Balance and Status; with the restored sample data, only I-03 is Overdue.
QUICK CHECK

Check your understanding

Answer four questions about the practice sheet.

1. What is the Balance for I-02?
2. Why is I-01 not marked Overdue?
3. Where should the Balance formula be entered?
4. What happens if I-03 Paid changes from 0 to 220?

Continue learning

Previous lesson: Simple CRM spreadsheet. Next lesson: Project timeline.