How to Do a Tolerance Stack-Up in Excel (and When to Stop)
A 1D stack-up in Excel is a signed sum of nominals plus two tolerance-combination formulas — and it is genuinely the right tool for a short linear chain. The problem is that nobody teaches the layout, so most stack-up spreadsheets fail on conventions rather than arithmetic. Here is the layout that works, the formulas, a worked example, and the five failure modes that tell you the chain has outgrown the sheet.
The layout that works
One row per contributor, five columns:
| Column | Contents | Example |
|---|---|---|
| A — Contributor | Name the feature and its drawing dimension, not just "part 3" | Housing shoulder depth Ø dim 12 |
| B — Sign | +1 or −1: does this dimension open or close the gap? | +1 |
| C — Nominal | The basic/nominal value, in one unit for the whole sheet | 50.00 |
| D — ±tol | The half-tolerance, always positive | 0.10 |
| E — Source | Drawing number and revision, or "assumed" | HSG-104 rev C |
Three conventions prevent most disasters:
- Half-tolerances only. Convert limit dimensions and asymmetric callouts to nominal ± before entry — 16.00/15.90 becomes 15.95 ±0.05. A full-width tolerance entered into the ±tol column silently doubles the spread.
- Decide the sign convention before data entry. Pick the direction that opens the gap; closing dimensions are +1, consumed dimensions −1. Write the convention at the top of the sheet — the next person to edit it will guess wrong.
- One chain per sheet. Loops sharing a part get separate sheets with a cross-reference, not separate columns.
The formulas
For contributors in rows 2–5:
- Nominal result:
=SUMPRODUCT(B2:B5, C2:C5)— the signed sum of nominals. - Worst-case tolerance:
=SUM(D2:D5)— tolerances add arithmetically. - RSS tolerance:
=SQRT(SUMSQ(D2:D5))— the ±3σ-equivalent statistical band. - Assembly limits: nominal − WC and nominal + WC give the guaranteed bounds.
Worked example: a housing and three rings
Three rings of width 16.00 ±0.05 sit inside a housing whose shoulder-to-shoulder depth is 50.00 ±0.10; the end gap is the key characteristic (the same chain is solved in detail in the stack-up guide):
| Contributor | Sign | Nominal | ±tol |
|---|---|---|---|
| Housing depth | +1 | 50.00 | 0.10 |
| Ring 1 width | −1 | 16.00 | 0.05 |
| Ring 2 width | −1 | 16.00 | 0.05 |
| Ring 3 width | −1 | 16.00 | 0.05 |
Nominal gap g = 50.00 − 48.00 = 2.00 mm. Worst-case tolerance 0.10 + 3×0.05 = ±0.25, so g = 2.00 ±0.25 — guaranteed between 1.75 and 2.25 mm if the drawing values hold. RSS tolerance √(0.10² + 3×0.05²) ≈ ±0.13 as a ±3σ-equivalent band. One sheet, two answers — and which one you may believe is the decision covered in worst-case vs statistical.
The five failure modes
- Sign errors. The single most common real-world failure. A −1 entered as +1 still produces a confident, wrong number — and nothing in the sheet flags it, because the arithmetic is internally consistent.
- No sensitivity. The sheet says ±0.25 but not which row to tighten. You end up perturbing cells by hand — doing sensitivity analysis without recording that you did.
- Chains that are not linear. Fastener float, flatness-driven tilt, contact order: the true chain is 3D, and a 1D sum is systematically optimistic about tilt-driven variation. The spreadsheet cannot warn you that you asked the wrong question.
- Version chaos.
stackup_v7_final_REVISED.xlsxin three inboxes — which copy matches which drawing revision? The sheet and the model drift apart silently, and both look finished. - No audit trail. Nothing records which input values were current, who changed cell D4, or which assumption made the RSS legal. A number you cannot defend in review is a number you do not have.
Where to stop
The handoff to real tooling should happen when any of these become true:
- more than five or six contributors, or more than a couple of loops per assembly;
- anyone besides the author has to trust or defend the number;
- results need to reach the drawing — a toleranced model, not a typed-up table;
- you spend more time maintaining the sheet than the design.
That is the handoff SuperNX was built for. It runs the same arithmetic your spreadsheet does — worst-case and RSS are not proprietary — but the inputs are measured off the NX model rather than re-typed, the signs and chains come from the mating geometry, per-contributor sensitivity is reported instead of hand-perturbed, and the output lands back on the model as PMI instead of in v8_final2.xlsx. Same math; the difference is provenance.
The short version
- Columns: contributor, sign, nominal, half-tolerance, source. One chain per sheet.
SUMPRODUCTfor the nominal,SUMfor worst-case,SQRT(SUMSQ())for RSS.- The math does not break — the process around it does. Stop when the process is the risk.
FAQ
- What is the Excel formula for a worst-case stack-up?
- Nominal gap: =SUMPRODUCT(sign_range, nominal_range). Worst-case tolerance: =SUM(halftol_range). The assembly limits are then nominal minus and nominal plus that sum — the tolerance adds arithmetically because worst-case assumes every contributor lands on its worst corner at once.
- How do I calculate an RSS stack-up in Excel?
- Use =SQRT(SUMSQ(halftol_range)) on the half-tolerance column. That gives the ±3σ-equivalent band, provided each entered ±t can be defended as roughly a 3σ spread of an independent distribution.
- Should I enter full tolerances or ± values?
- Enter half-tolerances only — the ±value. Convert limit dimensions and asymmetric tolerances to nominal ± first: 16.00/15.90 becomes 15.95 ±0.05. Mixing full-width tolerances into a column of half-tolerances silently doubles the answer.
- When is Excel not enough for a stack-up?
- Past five or six contributors, when the chain is not truly linear (float, tilt, contact order), when multiple loops share parts, or when the result must be audited or reach the drawing as PMI. The failure modes are process failures, not math failures.
- Can Excel do sensitivity analysis on a stack-up?
- Not natively per contributor — you end up zeroing or perturbing rows one at a time, which is slow and unrecorded. Needing sensitivity ranking is usually the signal that the problem has outgrown the spreadsheet.