Excel 16.0 build 20430
Windows, 64-bit, CPU not recorded
1,224 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
Statistical functions
Known larger differences on 16 of 1,271 recorded answers
Of 1,271 recorded answers (1,224 in the answer bank and 47 workbook cells), 16 do not match: 1 differ by more than 16 ULP, 15 differ by at most 16 ULP. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | BINOM.DIST.RANGE |
| Bulgarian | BINOM.DIST.RANGE |
| Czech | BINOM.DIST.RANGE |
| Danish | BINOMIAL.DIST.INTERVAL |
| German | BINOM.DIST.RANGE |
| Greek | BINOM.DIST.RANGE |
| English (Australia) | BINOM.DIST.RANGE |
| English (United Kingdom) | BINOM.DIST.RANGE |
| English (United States) | BINOM.DIST.RANGE |
| Spanish | DISTR.BINOM.SERIE |
| Estonian | BINOM.DIST.RANGE |
| Finnish | BINOMI.JAKAUMA.ALUE |
| French | LOI.BINOMIALE.SERIE |
| Hebrew | BINOM.DIST.RANGE |
| Croatian | BINOM.DIST.RANGE |
| Hungarian | BINOM.ELOSZL.TART |
| Indonesian | BINOM.DIST.RANGE |
| Italian | BINOM.DIST.RANGE |
| Japanese | BINOM.DIST.RANGE |
| Korean | BINOM.DIST.RANGE |
| Lithuanian | BINOM.DIST.RANGE |
| Latvian | BINOM.DIST.RANGE |
| Norwegian | BINOM.DIST.RANGE |
| Dutch | BINOM.VERD.BEREIK |
| Polish | ROZKŁ.DWUM.ZAKRES |
| Portuguese (Brazil) | BINOM.DIST.RANGE |
| Portuguese (Portugal) | DIST.BINOM.INTERVALO |
| Romanian | BINOM.DIST.RANGE |
| Russian | БИНОМ.РАСП.ДИАП |
| Slovak | BINOM.DIST.RANGE |
| Slovenian | BINOM.DIST.RANGE |
| Serbian (Latin) | BINOM.DIST.RANGE |
| Swedish | BINOM.FÖRD.INTERVALL |
| Thai | BINOM.DIST.RANGE |
| Turkish | BİNOM.DAĞ.ARALIK |
| Ukrainian | BINOM.DIST.RANGE |
| Vietnamese | BINOM.DIST.RANGE |
| Chinese (Simplified) | BINOM.DIST.RANGE |
| Chinese (Hong Kong) | BINOM.DIST.RANGE |
| Chinese (Traditional) | BINOM.DIST.RANGE |
Names from Microsoft's support site.
BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2])
BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2]) returns the probability that
the number of successes in (n) independent Bernoulli trials falls in a closed interval:
P(s ≤ X ≤ s₂) = Σ_{k=s}^{s₂} C(n, k) · p^k · (1 − p)^{n−k}
with (n =) trials, (p =) probability_s, (s =) number_s, (s_2 =) number_s2. When
number_s2 is omitted the interval collapses to a point and the function returns the single
mass (b(s; n, p)) — the same quantity as BINOM.DIST(s, n, p, FALSE).
Note the argument order. trials comes first here, and number_s third. Every other
binomial surface in Excel puts the success count first. Transposing the first two arguments by
habit produces a call that is usually still valid and always wrong, which makes this the single
most error-prone signature in the discrete family.
Domain. (n \ge 0); (0 \le p \le 1); (0 \le s \le s_2 \le n); all numeric arguments
truncated to integers. Microsoft states each constraint in the argument descriptions themselves
rather than in the Remarks: trials "Must be greater than or equal to 0"; probability_s
"Must be greater than or equal to 0 and less than or equal to 1"; number_s "Must be greater
than or equal to 0 and less than or equal to Trials"; number_s2 "Must be greater than or equal
to Number_s and less than or equal to Trials".
Range. ([0, 1]), with the value 1 attained exactly when the interval covers the whole support.
Identities.
BINOM.DIST.RANGE(n, p, s, s₂) = B(s₂; n, p) − B(s−1; n, p) difference of CDFs
BINOM.DIST.RANGE(n, p, s) = b(s; n, p) single mass
BINOM.DIST.RANGE(n, p, 0, n) = 1 normalisation
BINOM.DIST.RANGE(n, p, s, s₂) = BINOM.DIST.RANGE(n, 1−p, n−s₂, n−s) reflection
| Argument | Meaning | Admissible | Default |
|---|---|---|---|
trials | Number of independent trials | (\ge 0), truncated | — |
probability_s | Success probability per trial | (0 \le p \le 1) | — |
number_s | Lower end of the success interval | (0 \le s \le n), truncated | — |
number_s2 | Upper end of the interval | (s \le s_2 \le n), truncated | number_s |
There is no cumulative flag — the interval form subsumes it.
Microsoft documents "Numeric arguments are truncated to integers", which on this page covers
trials, number_s and number_s2. probability_s is of course not truncated; the sentence
is a family-wide phrasing rather than a literal claim about every argument.
Returns Number.
number_s2 omitted. A single mass. This is the reading most callers do not expect from
the function's name, and it is the one that makes BINOM.DIST.RANGE(n, p, k) a synonym for
BINOM.DIST(k, n, p, FALSE) — mathematically. Whether the two are the same computation is
a separate question; see the numerical notes.number_s = 0, number_s2 = trials. The whole support; the true answer is exactly 1.
The best available exactness probe.number_s = number_s2. A single mass, stated explicitly rather than by omission.trials = 0. The only admissible interval is ([0,0]), and the answer is 1.trials. The cost is (O(s_2 - s)) mass evaluations. There is
no closed form and no early exit; a range over a million trials is a million evaluations.lift_broadcast_profile: surface_native). There is no
legacy alias for this function — it has no pre-2010 counterpart — so the alias questions that
attach to the rest of the family do not arise here.As documented by Microsoft on the BINOM.DIST.RANGE page:
| Error | Condition |
|---|---|
#NUM! | Any argument is outside its stated constraints |
#VALUE! | Any argument is non-numeric |
That is unusually compact for this family: rather than enumerating conditions, the page defers
to the constraints written into the argument descriptions. Expanded, the #NUM! conditions are
(n < 0), (p < 0), (p > 1), (s < 0), (s > s_2), and (s_2 > n).
Why the function exists. Given the two cumulative values, the interval probability is their difference. When both are near 1 — an interval in the upper tail — that difference is catastrophic cancellation: two numbers agreeing in the leading digits are subtracted and the result is built entirely from the digits that were least reliable. Summing the interval's own masses instead is a sum of positive quantities, and a sum of positive quantities has no cancellation at all. Its relative error is bounded by the ordinary summation bound ((\gamma_{m-1}) for (m) terms; Higham, Accuracy and Stability of Numerical Algorithms, chapter 4), which for realistic interval widths is negligible.
That is the whole numerical argument for the surface, and it is a good one. It is also why an implementation that quietly computes this function as a difference of CDFs would be wrong precisely in the regime the function was added for.
trials at or below a fixed small threshold, and with (p) strictly between 0 and 1, it
sums masses computed by a direct combinatoric form — building (C(n,k)) by a running
product of ratios and multiplying by integer powers of (p) and (q).Cost. (O(s_2 - s)) mass evaluations with no shortcut. For a wide interval the incomplete-beta route is asymptotically better, and for an interval covering most of the support the complement (1 minus the two excluded tails) is better still — at the cost of reintroducing exactly the cancellation this function avoids. There is no universally right choice, which is itself worth stating.
Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
BINOM.DIST.RANGE · 5 lines · calc-func/src/catalogue/distributions.rs on GitHub72 binom_dist_range "BINOM.DIST.RANGE" (3, 4) [V "trials", V "probability_s", V "number_s", V "number_s2"] |s, a, sv| {
let [t, p, n] = nums::<3>(s, a)?;
let n2 = if given(a, 3) { Some(num(s, a, 3)?) } else { None };
out(s, dd::binom_dist_range_kernel(t, p, n, n2))
}
binom_dist_range_kernel · 25 lines · calc-func/src/ported/discrete_dist.rs on GitHub/// `BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2])`.
pub fn binom_dist_range_kernel(trials: f64, p: f64, number_s: f64, number_s2: Option<f64>) -> R {
let n = trials.trunc();
let s = number_s.trunc();
let s2 = number_s2.map_or(s, f64::trunc);
if n < 0.0 || !(0.0..=1.0).contains(&p) || s < 0.0 || s > n || s2 < s || s2 > n {
return Err(NUM);
}
let mass = |i: f64| {
if p == 0.0 {
if i == 0.0 { 1.0 } else { 0.0 }
} else if p == 1.0 {
if i == n { 1.0 } else { 0.0 }
} else {
binom_mass(i, n, p, 1.0 - p)
}
};
let mut sum = 0.0;
let mut i = s;
while i <= s2 {
sum += mass(i);
i += 1.0;
}
finite(sum.min(1.0))
}
nums catalogue/distributionsstirling_error ported/discrete_distdeviance ported/discrete_distbinom_mass ported/discrete_distfinite ported/discrete_distbinary_with ported/excel_numericexcel_x87_add ported/excel_numericexcel_x87_sub ported/excel_numericexcel_x87_mul ported/excel_numericexcel_x87_div ported/excel_numericmul ported/excel_numeric/x87add ported/excel_numeric/x87sub ported/excel_numeric/x87div ported/excel_numeric/x87No implementation has been published with a Handbook test suite for this function.
The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.
| Excel 16.0 build | Platform and CPU | Captured inputs |
|---|---|---|
| 20430 | Windows, 64-bit, CPU not recorded | 1,224 |
The record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.
Recorded environments and comparison details.
Windows, 64-bit, CPU not recorded
1,224 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
BINOM.INV — the quantile of the same distribution.BINOMDIST / CRITBINOM — the legacy names for the mass/cumulative and quantile forms.
BINOM.DIST.RANGE has no legacy counterpart; it was introduced with the dotted-name
generation, which is why its argument order follows no older convention.POISSON.DIST, NORM.DIST — the limiting approximations, and the usual (inaccurate)
substitutes for a wide-interval binomial probability.BINOM.DIST with the arguments in the same order. They are not in the
same order. This is the relationship most worth remembering.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents