NORM.DIST & NORM.INV: Normal Distribution & Z‑Scores Made Easy

NORM.DIST and NORM.INV functions in Excel tutorial showing normal distribution probability calculations inverse values statistics and data analysis
Master the NORM.DIST and NORM.INV functions in Excel to perform statistical analysis using the normal distribution. This tutorial explains the syntax, arguments, cumulative and probability density calculations, inverse normal distribution, practical examples, and common errors. You’ll also learn how to apply these functions for quality control, financial modelling, hypothesis testing, risk analysis, and probability calculations. Ideal for students, analysts, statisticians, researchers, finance professionals, and Excel users working with statistical data and predictive models.

How likely is a value? What score sits at the 90th percentile? Where should a quality cut-off fall? Questions like these come up in finance, manufacturing, grading, and research every day. They all rely on the normal distribution, the famous bell curve. Excel answers them with two paired functions. NORM.DIST turns a value into a probability. NORM.INV does the reverse, turning a probability back into a value. Together they make the bell curve practical.

This guide explains both functions in plain language. First, it covers the bell curve and z-scores. Then it shows exactly when to use each function. Six worked examples and a troubleshooting section make the ideas concrete.

The Bell Curve in Plain Terms

Many real-world measurements cluster around an average. Heights, test scores, and process outputs often follow this pattern. Most values sit near the mean. Fewer values appear as you move outward. Plotted, this forms the familiar bell shape. Two numbers define any normal curve: the mean and the standard deviation. The infographic below shows the curve and the area that NORM.DIST measures.

The normal distribution: a bell curve around the mean mean -1 SD +1 SD -2 SD +2 SD NORM.DIST = shaded AREA (probability to the left) a value x NORM.DIST turns a value into a probability. NORM.INV turns a probability back into a value.

The mean sits at the centre. Similarly, the standard deviation sets the width. Notably, NORM.DIST measures the shaded area to the left of a value. That area is the probability of getting a value at or below that point.

Z-Scores: A Common Scale

A z-score measures how far a value sits from the mean. Specifically, it counts the distance in standard deviations. For example, a z-score of 1 means one standard deviation above the mean. A z-score of minus 2 means two below. This lets you compare values from different datasets on one scale.

The z-score formula: z = (value - mean) / standard deviation Example: a score of 80, mean 70, standard deviation 5. z = (80 - 70) / 5 = 2.0 So the score of 80 is two standard deviations above average. In Excel: =(80 - 70) / 5 or use =STANDARDIZE(80,70,5).
Standard normal shortcut: When the mean is 0 and the standard deviation is 1, you have the standard normal curve. Excel offers NORM.S.DIST and NORM.S.INV for that case. They take a z-score directly.

The Syntax of Both Functions

The two functions mirror each other. Essentially, one takes a value and returns a probability. The other takes a probability and returns a value. Knowing which input you have tells you which to use.

NORM.DIST (value -> probability): =NORM.DIST(x, mean, standard_dev, cumulative) x -> the value you are asking about. mean -> the average of the distribution. standard_dev -> the standard deviation. cumulative -> TRUE for area to the left (probability), FALSE for the curve height at x. NORM.INV (probability -> value): =NORM.INV(probability, mean, standard_dev) probability -> a value between 0 and 1. Returns the x value with that much area to its left.
The cumulative argument matters. Use TRUE almost always. TRUE gives the probability, the shaded area to the left. FALSE gives the height of the curve at a point, which you rarely need outside of plotting.

Example 1: Probability of a Value or Less

Start with the most common question. What is the chance a value falls at or below a point? NORM.DIST with TRUE answers it directly. This is the shaded area from the infographic.

Chance a value is 80 or less: Exam scores: mean 70, standard deviation 10. =NORM.DIST(80, 70, 10, TRUE) Result: about 0.8413, or 84.13%. Meaning: roughly 84% of scores fall at or below 80. The value 80 sits one standard deviation above the mean.

Example 2: Probability Between Two Values

Often you want the chance of landing in a range. Fortunately, NORM.DIST handles this with a subtraction. You find the area below the upper bound. Then you subtract the area below the lower bound. The difference is the probability between them.

Chance a value is between 60 and 80: Mean 70, standard deviation 10. =NORM.DIST(80,70,10,TRUE) - NORM.DIST(60,70,10,TRUE) = 0.8413 - 0.1587 = 0.6826, or about 68.3%. So roughly 68% of values fall within one standard deviation on each side of the mean. This is the well-known 68% rule.

Example 3: Find a Percentile with NORM.INV

Sometimes you know the probability and want the value. That is the job of NORM.INV. For instance, you might need the 90th percentile score. You give NORM.INV the probability 0.90. It returns the matching value.

Find the 90th percentile score: Mean 70, standard deviation 10. =NORM.INV(0.90, 70, 10) Result: about 82.8. Meaning: 90% of scores fall at or below 82.8. To be in the top 10%, a student needs about 83 or more.

Example 4: Set a Quality Control Limit

Manufacturing uses these functions constantly. For instance, suppose a process fills bottles. You want the level below which only 1% of bottles fall. That is a lower control limit. NORM.INV finds it from the probability 0.01.

Find a 1% lower limit: Fill volume: mean 500 ml, standard deviation 4 ml. =NORM.INV(0.01, 500, 4) Result: about 490.7 ml. Meaning: only 1% of bottles fall below 490.7 ml. Set your reject threshold near this level to flag underfilled bottles while passing normal variation.

Example 5: Convert a Z-Score to a Probability

When you already have a z-score, use the standard normal functions. NORM.S.DIST takes a z-score directly. It needs no mean or standard deviation. This is handy in statistics work that lives on the z-scale.

Z-score to probability, and back: Probability below z = 1.5 : =NORM.S.DIST(1.5, TRUE) -> about 0.9332 The z-score for a given probability: =NORM.S.INV(0.95) -> about 1.645 That 1.645 is the classic cut-off for a one-sided 95% confidence level. You will meet it often in stats.

Example 6: The Chance of Exceeding a Value

NORM.DIST gives the area to the left. But sometimes you want the area to the right. That is the chance of exceeding a value. Because the total area is 1, you simply subtract from 1. This flips the question around neatly.

Chance a value is ABOVE 85: Mean 70, standard deviation 10. Area to the LEFT of 85: =NORM.DIST(85, 70, 10, TRUE) -> about 0.9332 Area to the RIGHT (the chance of exceeding 85): =1 - NORM.DIST(85, 70, 10, TRUE) -> about 0.0668 So only about 6.7% of values exceed 85. Subtracting from 1 always flips left-area into right-area.

Example 7: Estimate a Defect Rate

Quality teams use these functions to predict defects. A part must fall within upper and lower limits. Anything outside counts as a defect. NORM.DIST estimates the fraction outside the limits. This turns a process into a predicted reject rate.

Predict the fraction outside spec: A part: mean 50.0 mm, standard deviation 0.5 mm. Spec limits: lower 48.5 mm, upper 51.5 mm. Fraction below the lower limit: =NORM.DIST(48.5, 50, 0.5, TRUE) Fraction above the upper limit: =1 - NORM.DIST(51.5, 50, 0.5, TRUE) Total defect fraction = add the two tails together. Multiply by a million to get defects per million parts.
Why it matters: A tighter standard deviation shrinks both tails. Therefore, reducing variation directly lowers your predicted defect rate.

Troubleshooting NORM.DIST and NORM.INV

All three problems below are the most common. Each has a clear cause and a quick fix.

NORM.INV returns a #NUM! error

This error usually means the probability argument is out of range. NORM.INV needs a probability strictly between 0 and 1. A value of exactly 0 or 1 fails, and anything outside that range fails too. Check the first argument carefully. If it came from another cell, make sure that cell holds a proper probability. Percentages are a common trap here. If your value is 90 rather than 0.90, divide it by 100 first. Once the probability sits between 0 and 1, the function works.

The result seems far too small or too large

An answer that looks wrong often traces to the standard deviation argument. People sometimes enter the variance by mistake. Remember that standard deviation is the square root of variance, so the two differ a lot. Confirm you are passing the standard deviation, not the variance. Another common slip is mixing up the mean and standard deviation positions. The order is value, mean, standard deviation. Double-check that each argument is in its correct slot. With the right inputs in the right order, the result falls back into a sensible range.

NORM.DIST returns a tiny height instead of a probability

If NORM.DIST gives a small decimal that is not a probability, you likely set the cumulative argument to FALSE. FALSE returns the height of the curve at the point, not the area beneath it. That height is rarely what you want. For a probability, the shaded area to the left, set the last argument to TRUE. This single change switches the function from curve height to cumulative probability. In almost every practical case, TRUE is the correct choice.

Frequently Asked Questions

  • What is the difference between NORM.DIST and NORM.INV?+
    The two functions are reverses of each other. NORM.DIST takes a value and returns a probability: given a point on the bell curve, it tells you the chance of getting that value or less. NORM.INV takes a probability and returns a value: given a chance like 0.90, it tells you which value sits at that percentile. Use NORM.DIST when you have a number and want its probability, such as the chance a score is below 80. Use NORM.INV when you have a probability and want the matching number, such as the score at the 90th percentile.
  • What does the cumulative argument in NORM.DIST do?+
    The cumulative argument chooses what NORM.DIST returns. Set it to TRUE, and the function gives the cumulative probability, meaning the area under the curve to the left of your value. This is the probability of getting that value or less, and it is what you want in almost every practical situation. Set it to FALSE, and the function returns the height of the bell curve at that exact point, called the probability density. That height is only useful for plotting the curve itself. For any probability question, always use TRUE.
  • Why does NORM.INV give a #NUM! error?+
    NORM.INV requires its probability argument to be strictly between 0 and 1. If you pass exactly 0, exactly 1, or any number outside that range, the function returns a #NUM! error. The most common cause is entering a percentage instead of a decimal: 90 instead of 0.90. Divide any percentage by 100 before passing it in. If the probability comes from another cell, check that the cell holds a valid decimal probability. Once the argument sits properly between 0 and 1, NORM.INV returns the correct value without error.
  • How do I find the probability of a value in a range?+
    Use NORM.DIST twice and subtract. First, find the cumulative probability below the upper bound. Then find the cumulative probability below the lower bound. Subtract the second from the first, and the difference is the probability of landing between the two values. For example, =NORM.DIST(80,70,10,TRUE) - NORM.DIST(60,70,10,TRUE) gives the chance a value falls between 60 and 80. This works because each NORM.DIST call returns the area to the left, so subtracting removes the lower tail and leaves only the middle band you want.