问题来源

如下图:

存在两个第一名、两个第二名,用LARGE函数来取前三名的销售量时,就会出错。要想去除前三位销量数据,要借助FREQUENCY函数。

公式实现

在F2输入公式:

=LARGE(IF(FREQUENCY($B$2:$B$13,$B$2:$B$13),$B$2:$B$13),ROW(A1))

确定,可提取最大销量,公式向下填充,可得第二、第三销量。

公式解析

  • FREQUENCY($B$2:$B$13,$B$2:$B$13):

返回B2:B13区域中各单元格出现的频率。

FREQUENCY函数仅在数值出现第一次时返回数值出现的个数,其他返回0,所以,该部分返回值如下图:

  • IF(FREQUENCY($B$2:$B$13,$B$2:$B$13),$B$2:$B$13):

用IF函数,判断上一步结果,如果不是0,则返回对应数值,如果是0,则返回FLASE,所以,此部分返回由重复值和FLASE组成的数组,如下图:

  • LARGE(IF(FREQUENCY($B$2:$B$13,$B$2:$B$13),$B$2:$B$13),ROW(A1)):

在上一步公式中返回最大值,即最大销量。公式向下填充,返回第二、第三的销量。

FREQUENCY函数

  • 功能:

计算数值在某个区域内的出现频率,然后返回一个垂直数组。

  • 语法

FREQUENCY(data_array, bins_array)

  • 中文语法:

FREQUENCY(要统计的数组, 间隔点数组)

  • FREQUENCY 函数语法具有下列参数:

  1. Data_array 必需。 要对其频率进行计数的一组数值或对这组数值的引用。 如果 data_array 中不包含任何数值,则 FREQUENCY 返回一个零数组。

  2. Bins_array 必需。 要将 data_array 中的值插入到的间隔数组或对间隔的引用。 如果 bins_array 中不包含任何数值,则 FREQUENCY 返回 data_array 中的元素个数。