behaviour of Calc function MATCH

Winfried Donkers winfried.libreoffice at gmail.com
Wed Dec 21 16:15:58 UTC 2022


Hi Eike,

>> the functions MATCH and VLOOKUP.
>> =MATCH("b";{1,2,"d","e"};1) returns 2, which is in accordance with https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#__RefHeading__1018430_715980110
>> But =MATCH("b",B1:B4;1) with B1:B4 containing the values 1,2,"d","e" returns
>> #N/A, which IMHO is not in accordance with the ODF standard.
>> I know that Excel returns #N/A in both occasions.
> 
> #N/A is in accordance with ODF, 6.14.9 MATCH says for "MatchType = 1 or
> omitted" that "If Search is of type Text and the value found is of type
> Number, the #N/A Error is returned."; similar for "MatchType = -1" that
> "If Search is of type Number and the value found is of type Text, the
> #N/A Error is returned.". Same for HLOOKUP and VLOOKUP.

Yes, I now see the lines you mention. But following that are the lines 
"If MatchType is 1, the SearchRegion may be assumed to be sorted in 
ascending order, with smaller Numbers before larger ones, smaller Text 
values before larger ones (e.g., "A" before "B", and "B" before "BA"), 
and FALSE before TRUE. If the types are mixed, Numbers are sorted before 
Text, and Text before Logicals; evaluators without a separate Logical 
type may include a Logical as a Number. If MatchType is -1, then 
SearchRegion may be assumed to be sorted in descending order (the 
opposite of the above). ", which seem confusing when comparing wit the 
lines you mentioned.
Nevertheless, I will make that MATCH/HLOOKUP and VLOOKUP return #N/A 
error - after verifying how XLOOKUP and other functions using
ScQueryCellIterator< accessType >::FindEqualOrSortedLastInRange(..) or
ScQueryCellIterator< accessType >::FindEqualOrSortedLastInRange() ought 
to respond when Search is of type text and the value found is of type 
number.

> 
>> Why does Calc's MATCH conform partly with Excel behaviour and partly with
>> the ODF standard? Is this intended behaviour?
> 
> It looks more like implementation was omitted (or different in Excel
> back at that time?) from the array/matrix case. It would need to be
> implemented.
[...]
> I suggest to implement the type mismatch #N/A for both, cell range and
> array/matrix, if that is what Excel does.

Will do so, after creating a bug report about the inconsistency.

> Merry solstice, happy holidays and a prosperous new year!

Thanks, and like for you all!

Winfried


More information about the LibreOffice mailing list