Hmmm. I obviously had missed this. Sorry.
In short:
There seems to be a bug. EXACT()
is working differently depending on whether it is called for
- single references or scalar expressions or
- by a formula forcing it under array-evaluation explicitly or due to specifications (as is the case using
MATCH()
).
I can confirm this based on another test.
(In fact EXACT()
isn’t made for comparing numbers, but texts - and it is specified this way. Mixed usage requires automatic conversion based on a more general specification for Calc - and causing problems also in different places).
6.20.8
...
Syntax: EXACT( Text T1 ; Text T2 )
...
6.3 Implicit Conversion Operators
6.3.1 General
Any given function or operand takes 0 or more parameters, and each of those parameters has an expected type. The expected type can be one of the base types, identified above. It can also be of some conversion type that controls conversion, e.g., “Any” means that no conversion is done (it can be of any type); NumberSequence causes a conversion to an ordered sequence of zero or more numbers. If the passed-in type does not match the expected type, an attempt is made to automatically convert the value to the expected type. An Error is returned if the type cannot be converted (this can never happen if the expected type is Any). Unless otherwise noted, any conversion operation applied to a value of type Error returns the same value.
…
6.3.14 Conversion to Text
If the expected type is Text, then if value is of type:
• Number, transform into Text (with no whitespace).
• Text, return it.
• Logical, return “TRUE” if it is true and “FALSE” if it is false.
• Reference: perform conversion to scalar. If the referenced cell is empty, treat as an empty string (a text value with length 0). Then perform as above.
There is also subchapter 6.3.4 concerning ““Force to array context (ForceArray)””. There may occur conflicts.