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:

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:

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

SoftwareStandard NormalCustom 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

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


Return to the InvNorm Calculator to run your own calculation.