Page 381 - Excel 2007 Bible
P. 381
23_044039 ch18.qxp 11/21/06 11:09 AM Page 338
Part II
Working with Formulas and Functions
The following array formula is similar to the previous one, but it returns the actual cell address of the maxi-
mum value in the Data range. It uses the ADDRESS function, which takes two arguments: a row number
and a column number.
{=ADDRESS(MIN(IF(Data=MAX(Data),ROW(Data), “”)),COLUMN(Data))}
The previous formulas work only with a single-column range. The following variation works with any sized
range and returns the address of the smallest value in the range named Data:
=ADDRESS(MIN(IF(Data=MAX(data),ROW(Data), “”)),
MIN(IF(Data=MAX(data),COLUMN(Data), “”)))
Finding the row of a value’s nth occurrence in a range
The following array formula returns the row number within a single-column range named Data that con-
tains the nth occurrence of the value in a cell named Value:
{=SMALL(IF(Data=Value,ROW(Data), “”),n)}
The IF function creates a new array that consists of the row number of values from the Data range that are
equal to Value. Values from the Data range that aren’t equal to Value are replaced with an empty string. The
SMALL function works on this new array and returns the nth smallest row number.
The formula returns #NUM! if the Value is not found or if n exceeds the number of the values in the range.
Returning the longest text in a range
The following array formula displays the text string in a range (named Data) that has the most characters. If
multiple cells contain the longest text string, the first cell is returned.
{=INDEX(Data,MATCH(MAX(LEN(Data)),LEN(Data),FALSE),1)}
This formula works with two arrays, both of which contain the length of each item in the Data range. The
MAX function determines the largest value, which corresponds to the longest text item. The MATCH function
calculates the offset of the cell that contains the maximum length. The INDEX function returns the contents
of the cell containing the most characters. This function works only if the Data range consists of a single
column.
Determining whether a range contains valid values
You may have a list of items that you need to check against another list. For example, you may import a list
of part numbers into a range named MyList, and you want to ensure that all the part numbers are valid. You
can do so by comparing the items in the imported list to the items in a master list of part numbers (named
Master).
The following array formula returns TRUE if every item in the range named MyList is found in the range
named Master. Both ranges must consist of a single column, but they don’t need to contain the same num-
ber of rows.
{=ISNA(MATCH(TRUE,ISNA(MATCH(MyList,Master,0)),0))}
The array formula that follows returns the number of invalid items. In other words, it returns the number of
items in MyList that do not appear in Master.
{=SUM(1*ISNA(MATCH(MyList,Master,0)))}
338

