How to normalize data to a 0-1 scale
✓ Verified in LibreOffice 25.8.7.3 ✓ Verified in Google Sheets (2026-08-30)Min-max scaling — put different-ranged metrics on one comparable footing.
The formula
| App | Formula | Notes |
|---|---|---|
| Excel (desktop) | =(A2-MIN($A$2:$A$100))/(MAX($A$2:$A$100)-MIN($A$2:$A$100)) | Anchor the range and fill down. The minimum maps to 0, the maximum to 1. |
| Google Sheets | =(A2-MIN($A$2:$A$100))/(MAX($A$2:$A$100)-MIN($A$2:$A$100)) | Identical. |
| LibreOffice Calc | =(A2-MIN($A$2:$A$100))/(MAX($A$2:$A$100)-MIN($A$2:$A$100)) | Identical. |
How it works
Subtracting the minimum shifts the scale to start at zero; dividing by the range squeezes it to end at one: 30 sits exactly halfway between 10 and 50 → 0.5. Useful before averaging unlike metrics (a 0-100 score with a 0-5 rating) or for progress bars. Two caveats: a constant column gives 0/0 (guard with IF(MAX=MIN,...)), and new data outside the original min/max lands outside 0-1 — recompute or clamp. For outlier-heavy data, the z-score recipe is the sturdier scaling.
Verified, not just documented
We ran =(A3-MIN(A2:A4))/(MAX(A2:A4)-MIN(A2:A4)) in LibreOffice 25.8.7.3 (headless, with forced recalculation) and it returned 0.5 — exactly the expected result. We then ran the same formulas in Google Sheets, executed 2026-08-30: a formula-only workbook goes into Google Drive, which converts it to a Sheet and recalculates every formula with Google’s own engine, and comes back out as .xlsx carrying the values Google computed. It returned 0.5 for the worked example, the same value LibreOffice produced. Both engines’ numbers on this page are executed results. The Excel formula follows Microsoft’s official documented syntax — we do not run desktop Excel.
Functions used
MIN · MAX — see full Excel, Google Sheets & LibreOffice compatibility for each.
Related recipes
- How to calculate overtime pay
- How to calculate the range (max minus min)
- How to clamp (limit) a value between a minimum and maximum
- How to cap a percentage at 100%
- How to find the latest (or earliest) date in a range