NORM.INV Function (LibreOffice Calc)
Learn the NORM.INV function in LibreOffice Calc: Values of the inverse normal distribution.
Verification status: Official documentation referenced; example outcomes independently reasoned or arithmetically checked where stated. Not executed in LibreOffice Calc. How formula examples are checked
Historical validation scope: Native observations refer to saved LibreOffice Calc 25.2.3.2 Linux evidence dated 13 October 2026 at 14:34 UTC. This review verified artifact hashes and all 106 ODS/result pairs, and independently recalculated all 81 numerical assertions with SciPy normal quantile/CDF functions and arithmetic identities. Calc was not rerun. Error diagnostics remain scoped to the saved environment.
What NORM.INV does
NORM.INV answers a percentile question for a normally distributed quantity: what value has a specified proportion of observations at or below it? Suppose the average weight of an egg is 63 grams, the population standard deviation is 5 grams, and the weights follow a normal distribution. The 90th-percentile weight is approximately 69.41 grams, meaning the model predicts about 90% of weights at or below that threshold. This does not mean 90% of eggs weigh exactly 69.41 grams, nor does it establish that real measurements are normally distributed.
For a normal variable with mean μ and positive standard deviation σ, the mathematical relationship is
NORM.INV(p; mean; stdev) = mean + stdev * standard_normal_quantile(p)
0 < p < 1; stdev > 0
where Φ is the cumulative distribution function of the standard normal distribution. NORM.S.INV(p) supplies the standard-normal quantile Φ⁻¹(p). The percentile function is the inverse of the cumulative distribution, not the inverse of a probability-density curve. The result has the same units as the mean and standard deviation.
Official definition and example: LibreOffice Calc Help — Statistical Functions Part Four, NORM.INV, consulted 2026-10-13. Mathematical input limits are also specified for the equivalent legacy NORMINV in OASIS OpenDocument 1.4 OpenFormula, §6.18.53, consulted 2026-10-13.
Exact Calc syntax and required arguments
=NORM.INV(Number; Mean; StDev)
| Argument | Required? | Accepted meaning and validation |
|---|---|---|
Number |
Yes | Cumulative probability p strictly between 0 and 1. For the 90th percentile enter 0.9 or 90%, not 90. |
Mean |
Yes | The expected mean μ, in the original measurement units. It can be negative, zero or positive. |
StDev |
Yes | The distribution’s positive standard deviation σ, in the same units as Mean. Zero or negative is invalid. |
There are no optional arguments or defaults. The third argument is the population distribution’s assumed standard deviation, not a choice between sample and population standard-deviation functions. When estimating parameters from samples, assess uncertainty separately.
These formulas use the English function names, dot decimal separator, and semicolon argument separator used in the native-tested Calc locale. Another locale can display translated function names, comma decimals or different separators; adapt the formula to your installation instead of changing the mathematical meaning. Calc’s function language and separators can be configured. LibreOffice Calc Guide 26.2 — Setting Up and Customizing LibreOffice, consulted 2026-10-13.
Quick example: find the 90th percentile
Enter this in any empty cell:
=NORM.INV(0.9;63;5)
Expected result: 69.4077578277 (approximately 69.41). This is LibreOffice Help’s own example, also verified by native Calc calculation in the saved historical test workbook. For a threshold rounded to two decimal places, format the result cell to two decimals; keep the underlying unrounded value for later computations.
Build a reusable percentile calculator
Enter these labels and numbers on an empty sheet:
| Cell | Label or input | Enter | Meaning |
|---|---|---|---|
| A2 / B2 | Cumulative probability | 0.90 |
90% of the distribution is below the threshold |
| A3 / B3 | Mean (grams) | 63 |
Assumed mean |
| A4 / B4 | Standard deviation (grams) | 5 |
Assumed spread |
| A6 / B6 | Percentile cutoff | =NORM.INV(B2;B3;B4) |
69.4077578277 g |
| A7 / B7 | Probability below cutoff (check) | =NORM.DIST(B6;B3;B4;TRUE()) |
approximately 0.90 |
Use TRUE() for a cumulative probability check. With FALSE() the related NORM.DIST returns probability density, which is not the percentile probability and generally will not equal 0.9. The forward cumulative relationship is documented in LibreOffice Help — NORM.DIST (same statistical function reference), consulted 2026-10-13. The back-check was also performed natively in this review.
Further native-tested examples
All values below were independently calculated with Python’s standard-library normal quantile implementation and compared against recalculated Calc results; the displayed decimals are rounded for readability.
| Question | Paste into Calc | Expected value |
|---|---|---|
| 95th-percentile test score, mean 75, SD 12 | =NORM.INV(0.95;75;12) |
94.7382435234 |
| Upper 2% cutoff, mean 50, SD 2 | =NORM.INV(0.98;50;2) |
54.1074978213 |
| Lower endpoint of the central 95%, mean 50, SD 2 | =NORM.INV(0.025;50;2) |
46.0800720309 |
| Upper endpoint of the central 95%, mean 50, SD 2 | =NORM.INV(0.975;50;2) |
53.9199279691 |
| 99th-percentile demand, mean 500, SD 100 | =NORM.INV(0.99;500;100) |
732.6347874041 |
| Median of a normal model (mean 63) | =NORM.INV(0.5;63;5) |
63 |
When using a threshold in whole units (for example, inventory), choose the appropriate business rule for rounding. For a high-service-level stocking target, rounding up with ROUNDUP may be suitable, but note that a normal-demand approximation is not by itself a complete inventory model. For a two-sided central interval with tail probability α/2 at each end, use NORM.INV(α/2; μ; σ) and NORM.INV(1-α/2; μ; σ).
Advanced use: a two-sided normal range
Suppose process measurements are modeled with mean 50 and standard deviation 2. A central 95% range leaves 2.5% of model probability in each tail:
=NORM.INV(0.025;50;2) → 46.0800720309
=NORM.INV(0.975;50;2) → 53.9199279691
For a central 99% range, replace 0.025 and 0.975 by 0.005 and 0.995. These are distribution ranges for individual observations under the normal model, not 95% confidence intervals for an unknown population mean. For a confidence interval, you need a standard error and an applicable inferential procedure; do not substitute the spread of individual observations for sampling uncertainty.
Use NORM.S.INV to expose the underlying z-score
An exactly equivalent expression is:
=63+5*NORM.S.INV(0.9)
Its result matches the official egg-weight example within normal floating-point precision. This identity is useful when explaining a threshold to readers who are more familiar with z-scores. For an observed value x, STANDARDIZE gives (x-μ)/σ; avoid treating that forward z-score transformation as a replacement for finding a percentile threshold.
Protect a production calculator from invalid inputs
If probability is in B2, mean in B3, and standard deviation in B4, use:
=IF(OR(B2<=0;B2>=1;B4<=0);NA();NORM.INV(B2;B3;B4))
The check guards the two mathematical domain restrictions. Its use of NA() deliberately makes an invalid numeric domain conspicuous to downstream calculations; change the failure behavior if your sheet uses an explicit data-validation message. An equivalent constant-input guard was tested on valid inputs in Calc; invalid branches were not separately saved as executions. it is not a comprehensive type checker, because numeric-looking text can be implicitly converted and some cell types need separate checks. For strict data entry, consider adding Calc’s Data ▸ Validity restrictions to the probability and standard-deviation input cells.
Errors and troubleshooting: documented limits versus tested behavior
0 < Number < 1 and StDev > 0 are mathematical validity requirements for an ordinary finite inverse-normal quantile. Do not confuse the error label returned by one release with a guaranteed cross-version contract. The following observations were made in native Calc 25.2.3.2 (Linux), 2026-10-13:
| Input issue | Native observation | Suggested response |
|---|---|---|
Probability 0 or 1 |
#VALUE! (error 519) |
Keep p strictly inside (0,1). Percentile endpoints mathematically diverge to infinity. |
| Probability below 0 or above 1 | Err:502 |
Check whether a percentage was entered as 90 instead of 90%. |
Standard deviation 0 or negative |
Err:502 |
Correct the input; a positive spread is required. |
| Non-numeric text as probability or mean | #VALUE! (error 519) |
Confirm numeric cell values and input locale. |
Quoted numeric text such as "0.9" |
Converted and calculated in tested locale | Do not rely on implicit text coercion; input numeric values. |
| Missing third argument | Err:511 |
Supply all three required arguments. |
| Extremely small/large valid probability | Finite, potentially large-magnitude quantile | Check precision and the sensitivity of tail estimates. |
These are observations, not independent claims about LibreOffice 26.8 or every platform. The listed error observations remain version-specific. Misleading conclusions can arise if the normal distribution is a poor model (for example, strongly skewed or bounded data): a valid number is not proof of a valid statistical assumption.
Compatibility, legacy names and reproducibility
LibreOffice Help states NORM.INV has been available since LibreOffice 4.3 and documents the dotted name with COM.MICROSOFT.NORM.INV namespace information and explicitly says the dotted function is not part of the OpenDocument 1.3 OpenFormula standard. The OASIS OpenDocument 1.4 OpenFormula specification documents the older undotted NORMINV as an inverse-normal function, including the probability and standard-deviation constraints. These are distinct spellings for the same mathematical operation in relevant Calc contexts, not evidence that every application handles both names identically. Do not infer that a dotted-name formula saved through XLSX or ODS will round-trip identically on every version without a cross-application opening test.
This review executed the dotted name and related legacy identity natively in Calc 25.2.3.2 on Linux. It did not execute Microsoft Excel, OpenOffice, mobile spreadsheet apps, or LibreOffice 26.8. Locale and formula compatibility statements not backed by that native environment are documentation checks only, not platform-test results. The Help website was consulted on October 13, 2026 and may describe a newer release than the tested desktop build.
Related LibreOffice Calc functions
- NORM.S.INV — standard-normal inverse quantile: the underlying z-score when μ=0, σ=1.
- NORM.DIST — normal cumulative probability and density: convert a threshold back to a probability.
- NORM.S.DIST — standard-normal cumulative probability and density: check standard z-score tails.
- STANDARDIZE — convert measurements to z-scores: forward transformation given mean and standard deviation.
- CONFIDENCE.NORM — normal-based confidence-margin calculation: a related but different inferential task.
Verification and official references (checked 2026-10-13)
- LibreOffice Calc Help, Statistical Functions Part Four — NORM.INV and NORMINV. Supports the function meaning, exact syntax, official 69.4077578277 example, legacy name, LibreOffice 4.3 introduction and namespace note.
- LibreOffice Calc Help, Statistical Functions Part Five — NORM.S.INV. Supports the z-quantile counterpart and inverse-normal naming.
- OASIS OpenDocument 1.4 OpenFormula, Part 4, §6.18.53 NORMINV. Supports legacy standardized syntax and domain; does not itself prove the dotted implementation is standardized.
- LibreOffice Calc Guide 26.2, Setting Up and Customizing. Documents formula-language and locale settings.
- First-party native validation, 2026-10-13: packaged
native/test_native.py, recalculatednative/NORM_INV_NORM_S_INV_native.ods, andnative/native_results.jsondocument execution and observed output separately from official Help or independent Python calculations. Across the two companion reviews there were 81 independent numerical assertions passed (81/81) and 25 additional diagnostic observations. All native claims are limited to LibreOffice 25.2.3.2 on Linux.