NORM.S.DIST Function in Excel

Excel’s NORM.S.DIST function returns either the cumulative probability or the probability density for a z-score in the standard normal distribution.

Cumulative results represent areas under the curve, while density results describe the curve’s height at a point. The cumulative argument chooses between them.

In this article, I’ll show you how to convert raw scores to percentiles, calculate tail and interval probabilities, and find a two-tailed p-value.

NORM.S.DIST Function Syntax in Excel

The NORM.S.DIST function uses the following syntax:

=NORM.S.DIST(z,cumulative)
  • z is the z-score at which you want to evaluate the standard normal distribution.
  • cumulative controls the returned value. Use TRUE for the cumulative probability to the left of z, or FALSE for the probability density at z.

When to Use NORM.S.DIST Function

  • Convert a z-score into its cumulative probability or estimated percentile.
  • Find the share of a normally distributed population above or below a limit.
  • Calculate the probability between two z-scores.
  • Calculate one-tailed or two-tailed p-values from a z statistic.
  • Create density values for plotting a standard normal bell curve.

Example 1: Calculate Cumulative Probability From Z-Scores

Let’s start by turning several z-scores into cumulative probabilities.

Below is the dataset with Z-Score values in A2:A10 and an empty Cumulative Probability column in B2:B10 waiting for the results.

Dataset for NORM.S.DIST example 1

We want to return the area to the left of each z-score with one spilling formula.

Here is the formula:

=NORM.S.DIST(A2:A10,TRUE)
=NORM.S.DIST(A2:A10,TRUE) in B2

The range A2:A10 supplies all nine z-scores. TRUE tells NORM.S.DIST to return the cumulative area to the left of each value.

For z = -2, the result is 0.0228. At z = 1.96, the cumulative probability is 0.9750.

Pro Tip: This formula spills through B2:B10 in Excel 2021, Excel 2024, and Microsoft 365, so you enter it only in B2.

Example 2: Return Standard Normal Density

Now let’s switch the second argument to FALSE.

Below is the dataset with Z-Score values from -3 to 3 in A2:A14 and an empty Density (Curve Height) column in B2:B14.

Dataset for NORM.S.DIST example 2

We want to calculate the height of the standard normal curve at each z-score.

Here is the formula:

=NORM.S.DIST(A2:A14,FALSE)
=NORM.S.DIST(A2:A14,FALSE) in B2

FALSE returns the probability density, or curve height, rather than an accumulated area. At z = -3, the returned density is 0.0044.

The values are symmetric and reach 0.3989 at z = 0. You can use this output as the data for a bell curve chart.

Microsoft’s documentation calls this mode a probability mass function. For a continuous normal distribution, it is a probability density, not a probability.

Example 3: Convert Typing Speeds to Percentiles

Here’s a practical way to work with raw measurements instead of existing z-scores.

Below is the dataset with Candidate, Typing Speed (WPM), empty Z-Score and Estimated Percentile columns, plus a Metric and Value benchmark table.

The table lists Benchmark Mean (WPM) as 52 and Benchmark Std Dev (WPM) as 11.

Dataset for NORM.S.DIST example 3

We want to standardize each typing speed and then estimate its percentile under the normal model.

Here is the formula:

=STANDARDIZE(B2:B9,$G$2,$G$3)
=STANDARDIZE(B2:B9,$G$2,$G$3) in C2

Then use those z-scores to calculate the estimated percentiles:

=NORM.S.DIST(C2:C9,TRUE)
=NORM.S.DIST(C2:C9,TRUE) in D2

How this formula works:

  • STANDARDIZE compares each typing speed in B2:B9 with the benchmark mean in G2 and standard deviation in G3. The absolute references keep those benchmark cells fixed.
  • Rounded to two decimal places, Kayla Brennan’s z-score is 0.55.
  • NORM.S.DIST returns the cumulative probability for each z-score in C2:C9. The percentage format shows Kayla’s result as an estimated percentile of 70.7%.

Pro Tip: You can skip the separate z-score column with =NORM.DIST(B2:B9,$G$2,$G$3,TRUE). The two-step method still helps when you want to see or reuse each z-score.

Example 4: Calculate Probability Above a Limit

Next, we’ll calculate the share of packages expected to exceed a carrier’s weight limit.

Below is the dataset shown as a parameter card with Mean Package Weight (lb) of 42, Standard Deviation (lb) of 5, and Carrier Weight Limit (lb) of 50.

Its Z-Score and Share Above Limit result cells are empty and waiting for the answers.

Dataset for NORM.S.DIST example 4

We want to convert the weight limit to a z-score and calculate the right-tail probability above it.

Here is the formula:

=(B3-B1)/B2
=(B3-B1)/B2 in B4

Then calculate the share above the limit:

=1-NORM.S.DIST(B4,TRUE)
=1-NORM.S.DIST(B4,TRUE) in B5

How this formula works:

  • The formula in B4 subtracts the 42 lb mean from the 50 lb limit, then divides by the 5 lb standard deviation. The z-score is 1.60.
  • NORM.S.DIST returns the area to the left of 1.60. Subtracting that value from 1 returns the right-tail area, which is 5.48%.

Pro Tip: Because the standard normal distribution is symmetric, =NORM.S.DIST(-B4,TRUE) returns the same right-tail probability.

Example 5: Find Probability Between Z-Scores

Let’s use cumulative probabilities to measure several standard deviation bands.

Below is the dataset with band labels, Lower Z and Upper Z boundaries, and an empty Probability Between column in D2:D6.

Dataset for NORM.S.DIST example 5

We want to return the probability that a standard normal value falls between each pair of boundaries.

Here is the formula:

=NORM.S.DIST(C2:C6,TRUE)-NORM.S.DIST(B2:B6,TRUE)
=NORM.S.DIST(C2:C6,TRUE)-NORM.S.DIST(B2:B6,TRUE) in D2

How this formula works:

  • The first NORM.S.DIST call returns the cumulative area through each upper z-score in C2:C6.
  • The second call returns the area through each lower z-score in B2:B6.
  • Subtracting the lower area leaves only the probability between the boundaries. For the -1 to 1 band, the formula returns 68.27%.

The next two rows return 95.45% within two standard deviations and 99.73% within three standard deviations.

Example 6: Calculate a Two-Tailed Z-Test p-Value

Finally, here’s a two-tailed test using a known population standard deviation.

Below is the dataset shown as a parameter card with Sample Mean Fill (mL) of 498.6, Target Fill (mL) of 500, and Known Std Dev (mL) of 4.

It also shows a Sample Size of 36, with empty Z Statistic and Two-Tailed p-Value result cells waiting for the answers.

Dataset for NORM.S.DIST example 6

We want to calculate the z statistic for the bottling sample and then return its two-tailed p-value.

Here is the formula:

=(B1-B2)/(B3/SQRT(B4))
=(B1-B2)/(B3/SQRT(B4)) in B5

Then calculate the two-tailed p-value:

=2*(1-NORM.S.DIST(ABS(B5),TRUE))
=2*(1-NORM.S.DIST(ABS(B5),TRUE)) in B6

How this formula works:

  • The formula in B5 divides the difference between the 498.6 mL sample mean and 500 mL target by the standard error. The displayed z statistic is -2.10.
  • ABS converts the z statistic to its positive magnitude. NORM.S.DIST returns the cumulative area to the left of +2.10, and subtracting from 1 leaves the upper tail of 0.0179.
  • Multiplying by 2 includes both tails. The two-tailed p-value is 0.0357.

For a one-tailed left test, the p-value is 0.0179. That value belongs to the lower tail because the sample mean is below the target.

Tips & Common Mistakes

  • Range formulas spill automatically in Excel 2021, Excel 2024, and Microsoft 365. Excel 2019 and earlier need one formula per row or a formula entered with Ctrl+Shift+Enter.
  • A blocked output range causes a #SPILL! error. Clear the cells where the results need to appear.
  • An @ before NORM.S.DIST applies implicit intersection and reduces a range calculation to one result. Remove it when you want the full spill.
  • The NORM.DIST function produces the same result when its mean is 0 and standard deviation is 1. Its equivalent syntax is NORM.DIST(z,0,1,cumulative).
  • The legacy NORMSDIST(z) function has no cumulative argument and returns only the cumulative value.
  • The NORM.S.INV function for critical values finds z from a cumulative probability. NORM.S.INV(0.975) returns about 1.96, with an exact value of 1.959963985, so the reversal of Example 1 is approximate.
  • Do not use 1-NORM.S.DIST(z,FALSE) for a tail probability. FALSE returns a density, so subtracting it from 1 does not produce an area.
  • A text value supplied as z makes NORM.S.DIST return #VALUE!.

I showed how NORM.S.DIST turns z-scores into cumulative probabilities or curve heights, then used those results in several practical examples.

I hope you found this article helpful.

List of All Excel Functions

Related Excel Functions / Articles: