Forum Discussion
Array and Range
- Jan 25, 2022
A range is a collection of cells, and has a location on the sheet that is returned by the ROW function. An array is comprised of a set of numbers and does not return cell locations.
VLOOKUP returns numbers or arrays of numbers, whereas XLOOKUP returns range objects that may be combined using the intersection, union and composition operators, for example
XLOOKUP("b",C4:C8, C4:C8):XLOOKUP("d",C4:C8,D4:D8)
returns a multi-cell range, whereas an equivalent expression using VLOOKUP is invalid.
It is easy to confuse the two because the default property of a range is its value so what you see as the output of a formula is based upon the array of values in the input range. Other range properties include its .formula, its .interior.color and many other things that make a worksheet look 'pretty'. Arrays have none of this, they are just numbers held in memory.
=XLookup(value, A1:A10, C1:C10)
A1:A10 is a range reference.
Now, say you want to perform the lookup using 2 criteria (columns A and B):
=XLookup(1, (A1:10=x)*(B1:B10=y), C1:C10)
A1:A10=x returns an array of True/False values.
B1:B10=y returns an array of True/False values.
(A1:10=x)*(B1:B10=y) returns an array that is the result of multiplying the first two arrays (True=1 and False=0).
You often see arrays being created by some conditional comparison or mathematical operation being performed on a range - the intermediate results of the operations don't exist on a worksheet, but are stored in memory (a point that has already been mentioned).