Written and maintained by CASRAI Editorial Board
Last updated
To construct a normal distribution curve in Excel, set a mean and a standard deviation in two cells, build a column of x values around the mean, compute the height of the curve at each x with NORM.DIST(x, mean, standard_dev, FALSE), and plot the two columns as an XY scatter chart with smooth lines. The detail that decides whether you get a bell or an S-shaped curve is the last argument: FALSE returns the probability density (the bell), TRUE returns the cumulative distribution.
This guide builds the curve from scratch, shows a self-check against Microsoft’s own documented values, and then covers fitting the curve to real data and where to test normality (Excel has no built-in normality test; the SPSS route is summarised below).
What it is used for in research
A drawn normal curve is used to show the shape a variable would have if it followed a normal distribution with a given mean and standard deviation. Typical uses are teaching figures, a reference curve laid over a histogram of observed data, and shading an area to illustrate a probability. For the theory behind the shape, see normal and standard normal distribution; for the formula itself, see the probability density function of the normal distribution.
Install or access
Nothing needs to be installed. NORM.DIST and NORM.S.DIST are built-in Excel worksheet functions documented on Microsoft Support (see Sources). No add-in is needed to build the curve.
How to create a normal distribution curve in Excel, step by step
The steps below create a normal distribution in Excel from two parameters. The example uses mean 0 and standard deviation 1, which is the standard normal distribution; change the two input cells to draw any other normal curve.
- Enter the parameters. Put the mean in
B1and the standard deviation inB2(for example 0 and 1). The standard deviation must be greater than zero. - Build the x values. In
A5enter=$B$1-4*$B$2. InA6enter=A5+$B$2/10and fill down until the value reaches=$B$1+4*$B$2(81 rows in total). Because the grid is built from the mean and the standard deviation, it moves with them and the curve always stays centred in the chart. - Compute the curve height. In
B5enter=NORM.DIST(A5,$B$1,$B$2,FALSE)and fill down. All four arguments are required: x, mean, standard_dev and cumulative. WithFALSEthe function returns the probability density function. - Select both columns. Select
A5:B85(the x values and the densities). - Insert the chart. On the Insert tab, select Insert Scatter (X, Y) or Bubble Chart, and under Scatter choose a type that connects the points with lines, such as scatter with smooth lines. Microsoft states that a scatter chart never displays categories on the horizontal axis, so the x values keep their real numeric spacing.
- Tidy the chart. Add axis titles, remove the legend if there is only one series, and set the horizontal axis range to the same limits as your grid.
For the standard normal case only, =NORM.S.DIST(A5,FALSE) gives the same densities with two arguments (z and cumulative). Using NORM.DIST with mean 0 and standard deviation 1 and cumulative set to TRUE is documented by Microsoft as equivalent to the standard normal distribution.
How to create a normal distribution curve with your own data
To draw the curve that matches a sample, compute =AVERAGE(range) for the mean and =STDEV.S(range) for the standard deviation, point B1 and B2 at those cells, and the curve rebuilds itself. This shows the normal curve with the sample’s own mean and spread; it does not show whether the data are normal. To overlay the curve on a histogram of the same data, follow the COUNTIFS approach in histograms and the normal distribution rather than duplicating it here.
Output and how to read it
The chart is a symmetric bell centred on the mean. The vertical axis is density, not probability: a density value can be read only as relative height, and probabilities correspond to areas under the curve between two x values. The curve is highest at the mean. For the standard normal curve the peak height is about 0.3989 and the height at x = 1 is about 0.2420.
Self-check against Microsoft’s documented example
Microsoft’s NORM.DIST page gives a worked example with x = 42, mean = 40 and standard deviation = 1.5. In a spare cell enter =NORM.DIST(42,40,1.5,FALSE); the documented result is 0.10934. With TRUE in the last argument the documented result is 0.9087888. If your cells return these values, the formula and the arguments are set up correctly.
| Last argument | Returns | Shape when plotted | Microsoft example (x=42, mean=40, sd=1.5) |
|---|---|---|---|
FALSE |
Probability density function | Bell curve | 0.10934 |
TRUE |
Cumulative distribution function | S-shaped curve rising from 0 to 1 | 0.9087888 |
Troubleshooting
| Symptom | Cause documented by Microsoft or visible in the chart | Fix |
|---|---|---|
#NUM! |
standard_dev is zero or negative | Enter a standard deviation greater than 0 |
#VALUE! |
mean or standard_dev is nonnumeric (for example text in the input cell) | Make sure the input cells hold numbers |
| Chart looks like an S, not a bell | The last argument is TRUE (cumulative) |
Change it to FALSE |
| Horizontal axis shows 1, 2, 3 instead of the x values | A chart type that treats the x column as categories was chosen | Use a scatter chart, which never shows categories on the horizontal axis |
Testing for normal distribution in SPSS
Excel can draw a normal curve but has no built-in test of whether data follow one. In IBM SPSS Statistics the usual route to test normal distribution is Analyze, then Descriptive Statistics, then Explore, then Plots, then the option for normality plots with tests. IBM’s manual describes the Kolmogorov-Smirnov statistic with a Lilliefors significance level, and the Shapiro-Wilk statistic, which for unweighted data is calculated when the sample size lies between 3 and 5,000. The full SPSS walk-through, including how to check normal distribution in SPSS and read the output, is in testing normality in SPSS, with the descriptive-statistics context in descriptive statistics in SPSS. A visual check with a Q-Q plot complements any test.
Free alternatives
| Tool | Density function | Documented in |
|---|---|---|
| R | dnorm(x, mean, sd); curve(dnorm(x), from=-4, to=4) plots the standard normal |
R stats documentation, Normal distribution |
| Python (SciPy) | scipy.stats.norm.pdf(x, loc, scale) |
SciPy documentation, scipy.stats.norm |
For a Python introduction see SciPy stats.
FAQ
How do I create a normal distribution in Excel?
Enter a mean and standard deviation, list x values from mean minus 4 standard deviations to mean plus 4, compute =NORM.DIST(x,mean,sd,FALSE) for each, and chart the two columns as a scatter chart with smooth lines.
What is the difference between TRUE and FALSE in NORM.DIST?
TRUE returns the cumulative distribution function and FALSE returns the probability density function. Plot FALSE for a bell curve; plot TRUE for the cumulative S-curve.
How do I draw the standard normal curve?
Use mean 0 and standard deviation 1 in NORM.DIST, or use NORM.S.DIST(z, FALSE), which takes only z and the cumulative flag.
Does Excel test whether data are normally distributed?
NORM.DIST draws and evaluates the curve but does not test your data. For a test, use the SPSS Explore route above or the Shapiro-Wilk test in R.
How do I check normal distribution in SPSS?
Use Analyze, Descriptive Statistics, Explore, Plots, then Normality plots with tests, which reports Kolmogorov-Smirnov (Lilliefors) and Shapiro-Wilk results.
Sources (official documentation)
- Microsoft Support, NORM.DIST function, checked 2026-10-29.
- Microsoft Support, NORM.S.DIST function, checked 2026-10-29.
- Microsoft Support, Present your data in a scatter chart or a line chart, checked 2026-10-29.
- IBM, IBM SPSS Statistics Base, version 27 (Explore: normality plots with tests), checked 2026-10-29.
- R Core Team, The Normal Distribution (R stats documentation), checked 2026-10-29.
- SciPy, scipy.stats.norm, checked 2026-10-29.








