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
   376   377   378   379   380   381   382   383   384   385   386