Blog · Board and management reporting · Finance and FP&A teams
Month over month analysis compares a completed month with the month immediately before it. Reconcile revenue and cost changes by business unit, distinguish business-day effects from daily performance, and check seasonal context.
Month over month analysis compares one completed month with the immediately preceding month and explains the revenue or cost movement behind the total. Calculate the dollar change, calculate the rate against the prior month, then reconcile business-unit contributions. Check operating days and seasonal context before treating growth in the total as stronger underlying performance.
Use posted ledger rows for both closed months, with posting date, business unit, account group and reporting amount. Keep a documented mapping from account codes to revenue and operating costs. For this example, revenue and costs are both presented as positive amounts, and operating profit is revenue less operating costs.
Confirm the same entities, currency translation policy and business-unit definitions are included in both periods. If an acquired unit entered the accounts this month, show its contribution separately before describing the result as comparable growth. Review missing unit codes rather than silently dropping them.
The basic calculation is:
Monthly dollar change = Current month - Prior month
Monthly percentage change = (Current month - Prior month) / Prior month
For the formula's handling of zeros and negative starting values, use percentage change in Excel. This analysis goes beyond the cell formula to explain which parts of the business moved and whether the months offer comparable selling opportunity.
An illustrative US distributor compares February and March 2026. In a sheet named Ledger, put posting date in A, unit in B, account group in C, and positive reporting amount in D. In the summary below, unit names occupy A2:A4.
For February revenue in B2, use:
=SUMIFS(Ledger!$D$2:$D$10000,Ledger!$B$2:$B$10000,$A2,Ledger!$C$2:$C$10000,"Revenue",Ledger!$A$2:$A$10000,">="&DATE(2026,2,1),Ledger!$A$2:$A$10000,"<"&DATE(2026,3,1))
For March in C2, move the start to March 1 and the exclusive end to April 1. For costs in F2 and G2, use the same dates and replace "Revenue" with "Operating costs". Fill down through row 4. The exclusive end includes every posting time on the last day of the month.
Google's SUMIFS documentation describes summing a range using multiple criteria. These formulas use Google Sheets syntax. Covirage is not affiliated with Google.
| Unit | February revenue (USD) | March revenue (USD) | Revenue change (USD) | Revenue change | February costs (USD) | March costs (USD) | Cost change (USD) |
|---|---|---|---|---|---|---|---|
| Industrial | 600,000 | 660,000 | 60,000 | 10.0% | 450,000 | 480,000 | 30,000 |
| Commercial | 300,000 | 285,000 | -15,000 | -5.0% | 210,000 | 215,000 | 5,000 |
| Service | 100,000 | 115,000 | 15,000 | 15.0% | 80,000 | 85,000 | 5,000 |
| Total | 1,000,000 | 1,060,000 | 60,000 | 6.0% | 740,000 | 780,000 | 40,000 |
With the header in row 1, enter these formulas in D2, E2 and H2 respectively, then fill down:
=C2-B2
=IF(B2=0,"n/a",D2/B2)
=G2-F2
The total row sums dollars, while E5 is =D5/B5. Do not average the unit growth rates: the small Service unit and the much larger Industrial unit have different prior-month weights. All dollar movements are exact; rates are shown to one decimal place.
The unit revenue movements must equal the company movement. This reconciliation cell must return zero:
=SUM(D2:D4)-(SUM(C2:C4)-SUM(B2:B4))
Revenue contributions use the prior company total as their shared denominator:
| Unit | Revenue change (USD) | Prior company revenue (USD) | Contribution to company growth |
|---|---|---|---|
| Industrial | 60,000 | 1,000,000 | 6.0 percentage points |
| Commercial | -15,000 | 1,000,000 | -1.5 percentage points |
| Service | 15,000 | 1,000,000 | 1.5 percentage points |
| Total | 60,000 | 1,000,000 | 6.0 percentage points |
The formula for the first contribution is =D2/$B$5, formatted as a percentage and labeled as a contribution in percentage points. Commercial offset some Industrial growth; Service restored the same amount. The bridge directs the review toward Industrial's larger dollar movement while preserving Commercial's decline.
Operating profit rose from $260,000 to $280,000: February revenue less costs, then March revenue less costs. Its $20,000 increase equals the $60,000 revenue increase less the $40,000 cost increase. Costs rose 5.4%, and operating margin moved from 26.0% to 26.4%, using unrounded calculations before display. Investigate account-level changes with variance analysis before attributing the profit movement to efficiency.
This company operated Monday through Friday with no weekday closures in either month. February had 20 operating days and March had 22. Store actual closure dates in the optional holidays range when they apply; Google's NETWORKDAYS documentation explains that the function excludes Saturdays, Sundays and specified holidays.
=NETWORKDAYS(DATE(2026,2,1),DATE(2026,2,28))
=NETWORKDAYS(DATE(2026,3,1),DATE(2026,3,31))
| Measure | February | March |
|---|---|---|
| Revenue (USD) | 1,000,000 | 1,060,000 |
| Operating days | 20 | 22 |
| Revenue per operating day (USD) | 50,000.00 | 48,181.82 |
Daily revenue change is (1060000/22)/(1000000/20)-1, or -3.6%. Revenue rose 6.0% while daily revenue fell. That is a reason to examine orders, shipments and customer mix, rather than a conclusion that demand deteriorated.
Business-day normalization is not seasonal adjustment. Use seasonality in sales measures to compare the same month across years and distinguish recurring demand patterns. For a longer reporting interval, quarter-over-quarter analysis owns the quarterly comparison.
Bring your closed-month ledger exports and business-unit mapping as files or a Google Sheet. Covirage maps the columns, and its tools compute and check monthly totals, rates and unit contributions; the external AI model explains the movement with every figure traced to its rows. Create a free Covirage account, then set up your business and bring a sample of your own data.
See FP&A reporting for the monthly finance reporting context.
Subtract the prior month's value from the current month's value and divide by the prior month's value. Format the result as a percentage. When the prior value is zero, the growth rate is undefined; report the dollar movement and label the percentage unavailable.
Show a separate daily measure when revenue depends on operating days. Use the company's actual calendar, including closures and relevant weekend trading. Keep reported revenue alongside it, because a daily comparison answers a different question and does not remove seasonality or changes in customer mix.
One monthly comparison cannot establish a seasonal pattern. Compare the same month across prior years and examine several annual cycles where available. Promotions, acquisitions and accounting changes can resemble seasonality, so investigate the underlying business events before describing a movement as recurring.
Divide each unit's dollar change by the company's prior-month total. These contributions add to the company's growth rate when the units cover the full population. A unit's own growth rate uses its own prior value, so it answers a different question.