Implementation for the MATCH() Excel function.
Syntax: MATCH(
lookup_value,
lookup_array, match_type)
Returns a 1-based index specifying at what position in the
lookup_array the specified
lookup_value is found.
Specific matching behaviour can be modified with the optional
match_type parameter.
Value | Matching Behaviour |
1 | (default) find the largest value that is less than or equal to lookup_value. The lookup_array must be in ascending order*. |
0 | find the first value that is exactly equal to lookup_value. The lookup_array can be in any order. |
-1 | find the smallest value that is greater than or equal to lookup_value. The lookup_array must be in descending order*. |
* Note regarding
order - For the
match_type cases that require the lookup_array to be ordered, MATCH() can produce incorrect results if this requirement is not met. Observed behaviour in Excel is to return the lowest index value for which every item after that index breaks the match rule.
The (ascending) sort order expected by MATCH() is:
numbers (low to high), strings (A to Z), boolean (FALSE to TRUE)
MATCH() ignores all elements in the lookup_array with a different type to the lookup_value. Type conversion of the lookup_array elements is never performed.