Blog · Finance metrics and formulas
Build a SKU contribution table by joining sales to approved product costs and allocating a defined support pool. Work the Excel formulas and reconcile revenue, cost and allocated support to their source files.
Product profitability analysis in Excel starts with sales by SKU, the cost of those sales and a stated rule for shared expenses. Keep each cost layer visible so a missing join or overlapping expense cannot inflate the result. The workbook should explain the product ranking and prove the total.
Take a September 2026 sales-line export for a US industrial distributor. Include invoice-line ID, posting date, SKU, net units and net revenue after discounts, credits and allowances. Use the same business scope, currency and cutoff in the cost and support files.
Aggregate sales into an Excel table named Products, one row per SKU. Add other directly traced fulfillment expenses and recorded warehouse-support hours. In this example those expenses are excluded from COGS, and the hours allocate a separate support pool.
| SKU | Units | NetRevenue (USD) | OtherDirect (USD) | Hours |
|---|---|---|---|---|
| A | 100 | 10,000 | 500 | 20 |
| B | 80 | 12,000 | 800 | 10 |
| C | 50 | 5,000 | 700 | 30 |
| Total | 230 | 27,000 | 2,000 | 60 |
Preserve the invoice lines behind the summary. The units are comparable individual items here; do not add cases and individual units without conversion. Keep returns and their cost reversals aligned with the company's reporting policy.
Use the product taxonomy guide for family and line mappings. This walkthrough owns the SKU workbook implementation; the broader product profitability report explains the management report's cost boundaries.
The approved September table named Costs contains SKU and UnitCOGS in adjacent columns. These are the applicable costs of the units sold, including any costs already assigned through the company's costing method.
| SKU | UnitCOGS (USD) |
|---|---|
| A | 60 |
| B | 90 |
| C | 50 |
The illustration uses one approved unit cost per SKU for the period. Where actual costs vary by shipment, lot or date, match at that grain before aggregating. A current price list is not a substitute for recognized cost of sales.
Add CostMatches, UnitCOGS, COGS and BeforeSupport to Products. First check the cost key:
=COUNTIFS(Costs[SKU],[@SKU])
Every result must equal 1. Fix missing and duplicate costs before continuing. Then use:
=VLOOKUP([@SKU],Costs[[SKU]:[UnitCOGS]],2,FALSE)
=[@Units]*[@UnitCOGS]
=[@NetRevenue]-[@COGS]-[@OtherDirect]
Microsoft's VLOOKUP reference confirms that FALSE requests an exact match; duplicate keys return the first match, which is why the uniqueness check matters. Keep missing-match errors visible. Replacing them with zero would make an uncosted sale look profitable.
For a line-level sales workbook, summarize its joined costs by SKU with:
=SUMIFS(Sales[COGS],Sales[SKU],[@SKU])
Microsoft documents SUMIFS as adding values meeting multiple criteria. Use that summed-cost route instead of multiplying by a single unit cost when the costs vary. Covirage is not affiliated with Microsoft.
Finance approves a $3,000 warehouse-support expense pool for the same period. The pool excludes COGS and the $2,000 of directly traced expenses. The operating owner approves recorded handling hours as the allocation basis; all 60 hours relate to the products in this scope.
Put 3000 in P1. Calculate cost per hour in P2:
=$P$1/SUM(Products[Hours])
The rate is $3,000 / 60 = $50 per hour. A zero driver total needs an exception and a reviewed allocation basis; it cannot produce a meaningful rate. Add AllocatedSupport, Contribution and Margin:
=[@Hours]*$P$2
=[@BeforeSupport]-[@AllocatedSupport]
=IF([@NetRevenue]=0,NA(),[@Contribution]/[@NetRevenue])
| SKU | COGS (USD) | BeforeSupport (USD) | AllocatedSupport (USD) | Contribution (USD) | Margin |
|---|---|---|---|---|---|
| A | 6,000 | 3,500 | 1,000 | 2,500 | 25.0% |
| B | 7,200 | 4,000 | 500 | 3,500 | 29.2% |
| C | 2,500 | 1,800 | 1,500 | 300 | 6.0% |
| Total | 15,700 | 9,300 | 3,000 | 6,300 | 23.3% |
Product C consumes 30 of the 60 support hours, so it receives $1,500 of the pool. Its contribution is $5,000 minus $2,500 COGS, $700 direct expenses and $1,500 support, leaving $300. Its margin is $300 / $5,000 = 6.0%.
Percentages are rounded to one decimal place; formulas retain precision. The total margin is $6,300 / $27,000 = 23.3%, rather than the average of SKU margins. For costs driven by customer service activity, use the separate customer cost-to-serve guide.
Three checks must close. Revenue of $27,000 ties to the scoped sales export. COGS of $15,700 and other direct costs of $2,000 tie to their source accounts. Allocated support equals the entire $3,000 approved pool:
=SUM(Products[AllocatedSupport])-$P$1
=SUM(Products[NetRevenue])-SUM(Products[COGS])-SUM(Products[OtherDirect])-$P$1-SUM(Products[Contribution])
Both formulas return zero. The second proves $27,000 minus $15,700 minus $2,000 minus $3,000 equals $6,300. Corporate expenses outside this scope remain separate, so this subtotal is contribution after allocated support, not company net profit.
Finance owns the revenue and cost reconciliation. Operations owns the hours and pool boundary. The product manager reviews C's support demand and commercial role before changing price or assortment. A waterfall bridge can present subsequent changes without replacing these checks.
Bring your sales, approved SKU costs and support-driver files; Covirage maps the columns, and its tools compute and check product contribution and allocations. The external AI model explains the results with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.
See customer profitability analysis for the supporting business context.
Use the approved cost of the units sold for the reporting period. A latest purchase price may be useful for a separate pricing sensitivity, but it can differ from recognized cost of goods sold. Label any replacement-cost view clearly and reconcile the accounting view separately.
Use an activity that reflects how the particular support service is consumed, such as recorded handling hours for warehouse support. Document the pool, driver and scope. A convenient revenue percentage can conceal service effort, so review whether it changes the product ranking materially.
No. First separate avoidable costs from costs that would remain after discontinuation. Consider effects on other sales, customer requirements and capacity. An allocated contribution helps identify questions, but the allocated expense is not automatically cash that the business would save.