Cellwise Start free

Excel guide · 4 min read

How to normalize data in Excel

Quick answerTo scale a column to 0-1, use min-max normalization: =(D2-MIN($D$2:$D$7))/(MAX($D$2:$D$7)-MIN($D$2:$D$7)). The lowest value becomes 0, the highest 1, and everything else lands in between. When lower is better, like price, flip it: =(MAX(range)-B2)/(MAX(range)-MIN(range)).

Sample data

Every result on this page was calculated from this sheet by the same spreadsheet engine the Cellwise app uses.

ABCDE
1SupplierUnit priceDelivery daysQuality (0-100)Warranty (years)
2Northline4.25822
3Brightway3.659742
4Kessler & Co5.13912
5Orbit Supply3.97682
6Vantage4.754882
7Pemberton4.056792

Download this sheet as an Excel practice file (.xlsx)

Min-max: scale a column to 0-1

The sheet compares six suppliers on unit price, delivery days and a quality score. The columns are on different scales (dollars, days, points out of 100), so you can't just add them. Normalizing puts each column on the same 0 to 1 scale.

Min-max takes how far each value is above the minimum and divides by the full range. Quality runs from 68 (Orbit Supply) to 91 (Kessler & Co), so Kessler gets 1, Orbit gets 0, and Northline's 82 becomes 0.61. Lock MIN and MAX with $ so they still point at the whole column when you fill down.

In Excel 365 one formula does the column: =(D2:D7-MIN(D2:D7))/(MAX(D2:D7)-MIN(D2:D7)) spills 0.61, 0.26, 1, 0, 0.87 and 0.48. Multiply by 100 for a 0-100 score.

=(D2-MIN($D$2:$D$7))/(MAX($D$2:$D$7)-MIN($D$2:$D$7))

Result: 0.60869565217

0.6087 for Northline: 82 is 14 points above the minimum in a 23-point range.

When lower is better: reverse the scale

For price and delivery days, the smallest value is the best, so it should score 1. Swap the order in the numerator: subtract each value from the maximum instead of subtracting the minimum from each value.

Brightway is cheapest at 3.65 and scores 1; Kessler is the most expensive at 5.10 and scores 0. For delivery, Kessler's 3 days scores 1 and Brightway's 9 days scores 0. Don't use 1 minus the normalized value as a shortcut in one column and the swapped formula in another; pick one way and use it everywhere so the scores are easy to audit.

=ROUND((MAX(B2:B7)-B2:B7)/(MAX(B2:B7)-MIN(B2:B7)),2)

Result: spills 6 rows × 1 column

0.62
1
0
0.83
0.24
0.72

0.62, 1, 0, 0.83, 0.24 and 0.72: Brightway is cheapest, Kessler the most expensive.

Scale to 1-5 (or any range)

To land on a different range, multiply the 0-1 result by the width of the new range and add the bottom. For 1 to 5: 1 + 4 x the normalized value. Quality becomes 3.4, 2, 5, 1, 4.5 and 2.9.

The general form is new_min + (new_max - new_min) x (x - MIN) / (MAX - MIN), so 0-10 is 10 x the normalized value and 1-10 is 1 + 9 x it.

=ROUND(1+4*(D2:D7-MIN(D2:D7))/(MAX(D2:D7)-MIN(D2:D7)),1)

Result: spills 6 rows × 1 column

3.4
2
5
1
4.5
2.9

3.4, 2, 5, 1, 4.5 and 2.9 on a 1-5 scale.

Divide by max, or z-scores: which to pick

Dividing by the maximum keeps zero meaningful: =D2/MAX($D$2:$D$7) gives 0.9 for Northline, "90% of the best". Scores stay close together (0.75 to 1 here), because the lowest value doesn't become 0. For lower-is-better columns, use MIN/value: =MIN($B$2:$B$7)/B2 gives the cheapest supplier 1 and Kessler 0.72.

A z-score says how many standard deviations a value is from the average: =STANDARDIZE(D2,AVERAGE($D$2:$D$7),STDEV.S($D$2:$D$7)). Quality gives 0.19, -0.74, 1.24, -1.44, 0.89 and -0.16. Z-scores have no fixed range and can be negative, which makes them right for statistics and outlier checks, and awkward for a scorecard people read.

Which to use: min-max for scorecards and dashboards where 0 is worst and 1 is best. Divide by max when "percent of the best" is the story. Z-scores for statistics, or when one extreme value would squash everyone else's min-max score, because min-max depends entirely on the single lowest and highest value.

=ROUND(STANDARDIZE(D2:D7,AVERAGE(D2:D7),STDEV.S(D2:D7)),2)

Result: spills 6 rows × 1 column

0.19
-0.74
1.24
-1.44
0.89
-0.16

0.19, -0.74, 1.24, -1.44, 0.89 and -0.16: Kessler is 1.24 standard deviations above average.

Combine normalized columns into one score

Once every column is 0-1 with 1 as best, you can average them. The LET formula below normalizes price and delivery (reversed) and quality, averages the three and sorts the suppliers: Kessler & Co 0.67, Vantage 0.65, Northline 0.63, Pemberton 0.57, Brightway 0.42, Orbit Supply 0.39.

Weights change the result, so put them in cells and decide them before you look at the ranking. With 50% on price, 20% on delivery and 30% on quality, Northline leads with 0.63 and Kessler drops to 0.5, because it is the most expensive. SUMPRODUCT of the normalized columns and a weights row does the same in older Excel.

=LET(p,B2:B7,c,C2:C7,q,D2:D7,np,(MAX(p)-p)/(MAX(p)-MIN(p)),nc,(MAX(c)-c)/(MAX(c)-MIN(c)),nq,(q-MIN(q))/(MAX(q)-MIN(q)),s,(np+nc+nq)/3,SORTBY(HSTACK(A2:A7,ROUND(s,2)),s,-1))

Result: spills 6 rows × 2 columns

Kessler & Co0.67
Vantage0.65
Northline0.63
Pemberton0.57
Brightway0.42
Orbit Supply0.39

Kessler & Co 0.67 at the top, Orbit Supply 0.39 at the bottom.

#DIV/0! when every value is the same

Every supplier offers a 2-year warranty, so MAX minus MIN is 0 and min-max divides by zero. A column that doesn't vary can't separate the suppliers anyway, so the cleanest fix is to leave it out of the score. If it must stay, wrap the formula in IFERROR and give everyone the same value: =IFERROR((E2-MIN($E$2:$E$7))/(MAX($E$2:$E$7)-MIN($E$2:$E$7)),1).

=(E2-MIN($E$2:$E$7))/(MAX($E$2:$E$7)-MIN($E$2:$E$7))

Result: #DIV/0!

#DIV/0!: all six warranty values are 2, so the range is 0.

Common mistakes

Forgetting the $ on MIN and MAX

Filled down, MIN(D2:D7) becomes MIN(D6:D11) and every row is scaled against a different range. Lock it: $D$2:$D$7.

Normalizing price the same way as quality

The most expensive supplier would score 1. Reverse lower-is-better columns with (MAX-x)/(MAX-MIN).

Including the header or a total row

A total row becomes the MAX and squashes everything else toward 0. Point the ranges at the data rows only.

Adding raw columns before normalizing

The column with the biggest numbers dominates. Normalize each column first, then average or weight them.

FAQ

What is the formula to normalize data between 0 and 1 in Excel?

=(A2-MIN($A$2:$A$100))/(MAX($A$2:$A$100)-MIN($A$2:$A$100)). The smallest value becomes 0 and the largest 1.

Does Excel have a NORMALIZE function?

No. STANDARDIZE returns a z-score, which is a different kind of normalization. Min-max scaling is written with MIN and MAX as shown above.

Should I normalize or standardize my data?

Normalize (min-max) when you need a fixed 0-1 range, for scores and charts. Standardize (z-score) for statistics, comparing to the average, or when outliers would distort min-max.

How do I normalize data to 100?

Multiply the 0-1 result by 100, or use =A2/MAX($A$2:$A$100)*100 to show each value as a percentage of the highest.

Functions used

Related guides

Updated