Excel 16.0 build 20430
Windows, 64-bit, CPU not recorded
1,227 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.
Logical functions
Refuses 2 of 1,377 recorded calls; the rest match
Of 1,377 recorded answers (1,227 in the answer bank and 150 workbook cells), 2 do not match: 2 are refused. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | NOT |
| Bulgarian | NOT |
| Czech | NOT |
| Danish | NOT |
| German | NICHT |
| Greek | NOT |
| English (Australia) | NOT |
| English (United Kingdom) | NOT |
| English (United States) | NOT |
| Spanish | NO |
| Estonian | NOT |
| Finnish | NOT |
| French | NON |
| Hebrew | NOT |
| Croatian | NOT |
| Hungarian | NOT |
| Indonesian | NOT |
| Italian | NOT |
| Japanese | NOT |
| Korean | NOT |
| Lithuanian | NOT |
| Latvian | NOT |
| Norwegian | NOT |
| Dutch | NOT |
| Polish | NOT |
| Portuguese (Brazil) | NOT |
| Portuguese (Portugal) | NÃO |
| Romanian | NU |
| Russian | NOT |
| Slovak | NOT |
| Slovenian | NOT |
| Serbian (Latin) | NOT |
| Swedish | INTE |
| Thai | NOT |
| Turkish | DEĞİL |
| Ukrainian | NOT |
| Vietnamese | NOT |
| Chinese (Simplified) | NOT |
| Chinese (Hong Kong) | NOT |
| Chinese (Traditional) | NOT |
Names from Microsoft's support site.
NOT(logical)
NOT returns the logical complement of the truthiness of its single argument.
The rule is two steps, and both are worth naming:
Logical is itself. A Number is false when it is exactly 0 and true
otherwise. Anything that is neither must first coerce to a number, and text that does not read
as a number fails.TRUE if step 1 produced false, FALSE if it produced true.NOT is the only function in Excel's logical group with a fixed arity of exactly one. It is not a
reducer, so none of the scan and skip machinery of AND, OR, and XOR applies to it: there is
no "ignore text in a range" rule, because there is no range scan.
NOT(logical)
The commonly misunderstood point is that NOT is not a filter or a set complement. NOT(A1:A3)
is not "everything except those cells"; it is a single-value test whose behaviour on a
multi-cell reference is a shape question, addressed below.
Returns a Logical, or an Error.
NOT(0) is TRUE. This is the case people rely on for "is this blank-or-zero".FALSE, including negatives and very large magnitudes. There is no
tolerance band around zero.NOT is a scalar-shaped function; how a multi-cell argument is handled is governed
by the lifting rules in Coercion and lifting rather than
by anything specific to NOT.| Error | Condition |
|---|---|
#VALUE! | The argument is text that does not read as a number, or is empty. |
| any incoming error | Propagates unchanged. |
AND's classifier maps blank and skipped text
to "contributes nothing"; NOT has no such bucket and must fail instead. Reusing one function
for both is the natural refactor and it silently changes NOT's blank behaviour.0.0. Negative zero compares equal to
zero and therefore yields TRUE — worth a vector when a suite exists.NOT has no non-finite path: its result is always a logical or an error, so the publication
policy is the default one (NonFinite::Allow in the classification axes) and there is no
#NUM! route.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.
NOT · 9 lines · calc-func/src/catalogue/logical.rs on GitHubCatalogueEntry {
id: NOT,
spelling: "NOT",
notation: Notation::Call,
arity: CallableArityShape::exact(1),
parameters: &[Parameter::value("logical")],
demand: ArgumentDemand::Eager,
kernel: Kernel::Eager(not),
}
not · 17 lines · calc-func/src/catalogue/logical.rs on GitHub/// NOT: its argument read as a logical (as IF reads its condition), reversed; the argument's
/// error is the result. An array argument, over which NOT lifts, and a callable are refused as not
/// modelled.
fn not(
arguments: &[CalcValue],
services: &mut EvalServices<'_>,
) -> Result<CalcValue, FunctionFault> {
let site = Site::new(NOT, services);
Site::finish(
site.scalar_operands(arguments)
.and_then(|()| not_callable(&site, 0, &arguments[0]))
.and_then(|()| {
let logical = site.argument(0, coerce::logical(&arguments[0]))?;
Ok(CalcValue::logical(!logical))
}),
)
}
not_callable catalogue/logicalParameter::value cataloguelogical coerceNo 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,227 |
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,227 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.
AND, OR, XOR are the variadic members of the same group; NOT is the unary one, and the
asymmetry in blank handling between them is real, not an editorial simplification.NOT to AND and OR for the well-classified cases. They do not
extend to the family's #VALUE!-on-empty-scan behaviour, which has no algebraic counterpart:
NOT(AND(range)) and OR(NOT-of-each) can differ when the range contains no truth values.<> (FUNC.OP_NOT_EQUAL) is a comparison, not a complement, and is what readers usually want
when they write NOT(a = b).IFERROR and ISERROR are what readers want when they write NOT(ISERROR(...)); the
double-negation idiom NOT(ISERROR(x)) is exactly ISNUMBER-style inspection and is often
better written with the positive test.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents