Summary

To list the most frequently occurring numbers in a column (i.e. most common, second most common, third most common, etc), you can an array formula based on four Excel functions: IF, MODE, MATCH, and ISNUMBER. In the example shown, the formula in D5 is:

{=MODE(IF(1-ISNUMBER(MATCH(data,$D$4:D4,0)),data))}

where "data" is the named range B5:B16. The formula is then copied to rows below D5 to output the desired list of most frequent numbers.

Note: this is an array formula and must be entered with control + shift + enter.

Generic formula

{=MODE(IF(1-ISNUMBER(MATCH(data,exp_rng,0)),data))}

Explanation 

The core of this formula is the MODE function, which returns the most frequently occurring number in a range or array. The rest of the formula just constructs a filtered array for MODE to use in each row. The expanding range $D$4:D4 works to exclude numbers already output in $D$4:D4.

Working from the inside out:

  1. The MATCH checks all numbers in the named range "data" against existing numbers in the expanding range $D$4:D4
  2. ISNUMBER converts matched values to TRUE and non-matched values to FALSE
  3. 1-NUMBER reverses the array, and the math operation outputs ones and zeros
  4. IF uses the array output of #3 above to filter the original list of values, excluding numbers already in $D$4:D4
  5. The MODE function returns the most frequent number in the array output in step #4

In cell D5, no filtering occurs and the output of each step above looks like this:

{#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A}
{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
{1;1;1;1;1;1;1;1;1;1;1;1}
{93;92;93;94;95;96;97;98;99;93;97;95}
93

In cell D6, with 93 already in D5, the output looks like this:

{2;#N/A;2;#N/A;#N/A;#N/A;#N/A;#N/A;#N/A;2;#N/A;#N/A}
{TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
{0;1;0;1;1;1;1;1;1;0;1;1}
{FALSE;92;FALSE;94;95;96;97;98;99;FALSE;97;95}
95

Handling errors

The MODE function will return the #N/A error when there is no mode. As you copy the formula down into subsequent rows, you will likely run into the #N/A error. To trap this error and return an empty string ("") instead, you can use IFERROR like this:

=IFERROR(MODE(IF(1-ISNUMBER(MATCH(data,$D$4:D4,0)),data)),"")
Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.