InvNorm in Excel and Google Sheets
Last reviewed: June 2026 by the InvNorm Calculator Editorial Team. Report an issue
Excel and Google Sheets provide built-in functions for calculating inverse normal distribution values. These functions are the spreadsheet equivalent of the invNorm function on graphing calculators. This guide covers the four main functions, shows you how to use them, and compares them to equivalent commands in R and Python.
Excel Functions for Inverse Normal
Excel offers two pairs of functions for the inverse normal distribution. The newer versions (introduced in Excel 2010) have a dot in the name, while the older versions are retained for backward compatibility.
NORM.S.INV — Standard Normal
=NORM.S.INV(probability) Returns the Z score from the standard normal distribution (mean = 0, standard deviation = 1) for the given left cumulative probability. This is equivalent to invNorm(probability) on a TI-84.
Example: =NORM.S.INV(0.975) returns 1.95996, the familiar Z critical value for a 95% confidence interval.
NORM.INV — Custom Normal
=NORM.INV(probability, mean, standard_dev) Returns the X value from a normal distribution with the specified mean and standard deviation. This is equivalent to invNorm(probability, mean, sd) on a TI-84.
Example: =NORM.INV(0.90, 500, 100) returns 628.155, the 90th percentile of a normal distribution with mean 500 and standard deviation 100.
Legacy Functions: NORMSINV and NORMINV
Older versions of Excel used NORMSINV and NORMINV (without the dots). These functions work identically to their modern counterparts:
=NORMSINV(probability)is the same as=NORM.S.INV(probability)=NORMINV(probability, mean, standard_dev)is the same as=NORM.INV(probability, mean, standard_dev)
Microsoft recommends using the newer dot-notation versions, but the legacy functions remain available in all current versions of Excel.
Google Sheets Functions
Google Sheets supports all four function names. You can use either the modern or legacy syntax:
=NORM.S.INV(0.95)or=NORMSINV(0.95)— both return approximately 1.64485=NORM.INV(0.95, 100, 15)or=NORMINV(0.95, 100, 15)— both return approximately 124.67
The behavior is identical to Excel. The probability argument is always the left cumulative probability (area to the left).
Practical Excel Examples
Finding a Percentile
Student test scores are normally distributed with a mean of 72 and a standard deviation of 10. To find the 85th percentile cutoff:
=NORM.INV(0.85, 72, 10) Result: 82.36. Students scoring above 82.36 are in the top 15%.
Try this example in the calculator
Right Tail Calculation
To find the value where only 1% of observations fall above it (right tail = 0.01), use a left cumulative probability of 0.99:
=NORM.INV(0.99, 72, 10) Result: 95.26.
Two-Tailed Critical Values
To find critical values for a 95% confidence interval on the standard normal distribution, calculate both tails:
=NORM.S.INV(0.025) // Returns -1.95996 (lower)
=NORM.S.INV(0.975) // Returns 1.95996 (upper) Working with Data in Cells
In practice, you often reference cell values. If cell A1 contains the probability, B1 contains the mean, and C1 contains the standard deviation:
=NORM.INV(A1, B1, C1) This makes it easy to build interactive spreadsheets where changing the inputs automatically recalculates the result.
Comparison Across Software
| Software | Standard Normal | Custom Normal (μ, σ) | Notes |
|---|---|---|---|
| Excel (modern) | =NORM.S.INV(p) | =NORM.INV(p, μ, σ) | Available since Excel 2010 |
| Excel (legacy) | =NORMSINV(p) | =NORMINV(p, μ, σ) | Backward compatible |
| Google Sheets | =NORM.S.INV(p) or =NORMSINV(p) | =NORM.INV(p, μ, σ) or =NORMINV(p, μ, σ) | Both syntaxes supported |
| R | qnorm(p) | qnorm(p, mean=μ, sd=σ) | Base R, no packages needed |
| Python (SciPy) | norm.ppf(p) | norm.ppf(p, loc=μ, scale=σ) | Requires from scipy.stats import norm |
| TI-84 | invNorm(p) | invNorm(p, μ, σ) | Always uses left cumulative probability |
In every tool listed above, the probability p represents the left cumulative probability — the area under the curve to the left of the value you are solving for.
R: qnorm Function
R's built-in qnorm function computes the inverse normal. It is part of base R and requires no additional packages.
# Standard normal: Z score for the 97.5th percentile
qnorm(0.975)
# Returns: 1.959964
# Custom normal: 90th percentile with mean=500, sd=100
qnorm(0.90, mean = 500, sd = 100)
# Returns: 628.1552
# Lower tail = FALSE (right tail probability)
qnorm(0.05, lower.tail = FALSE)
# Returns: 1.644854 The lower.tail parameter in R provides a built-in way to handle right tail probabilities without manual subtraction.
Python: scipy.stats.norm.ppf
In Python, the norm.ppf function from the scipy.stats module calculates the inverse normal (percent point function).
from scipy.stats import norm
# Standard normal
norm.ppf(0.975)
# Returns: 1.959963984540054
# Custom normal
norm.ppf(0.90, loc=500, scale=100)
# Returns: 628.1551565544601
# Using the survival function for right tail
norm.isf(0.05)
# Returns: 1.6448536269514729 The norm.isf function (inverse survival function) is the direct equivalent of a right tail inverse normal calculation.
Common Errors and Solutions
- #NUM! error in Excel: This occurs when the probability is not between 0 and 1 (exclusive). Make sure your probability is strictly greater than 0 and strictly less than 1.
- #VALUE! error: This usually means one of the arguments is text rather than a number. Check that cell references contain numeric values.
- Standard deviation must be positive: NORM.INV requires a positive value for the standard_dev argument. If you pass 0 or a negative number, Excel returns an error.
- Confusing NORM.INV with NORM.DIST: NORM.DIST goes from a value to a probability (forward direction). NORM.INV goes from a probability to a value (reverse direction). See our InvNorm vs NormalCDF comparison.
Frequently Asked Questions
NORM.S.INV takes only one argument (the probability) and returns the Z score from the standard normal distribution (mean 0, standard deviation 1). NORM.INV takes three arguments (probability, mean, standard deviation) and returns the X value from a custom normal distribution. They give the same result when mean is 0 and standard deviation is 1.
Yes. Google Sheets supports both NORM.INV(probability, mean, standard_dev) and NORMINV(probability, mean, standard_dev). It also supports NORM.S.INV(probability) and NORMSINV(probability) for the standard normal distribution. The syntax is identical to Excel.
In Python, use scipy.stats.norm.ppf(p, loc=mean, scale=sd). In R, use qnorm(p, mean=mean, sd=sd). Both functions accept the left cumulative probability as the first argument and return the corresponding value from the normal distribution.
Related Calculators
InvNorm Calculator
Calculate inverse normal values with steps and a graph.
InvNorm on TI-84
Step-by-step guide for TI-84 Plus calculators.
Z Table
Standard normal distribution table for manual lookups.
Z Score from Probability
Multiple methods to find Z scores from probabilities.
Return to the InvNorm Calculator to run your own calculation.