Excel 2016教程: 用数组查找出区域中的 n 个最大值
查找出区域中的 n 个最大值
要找出区域中的多个最大值,可以使用 LARGE 函数替代 SMALL 函数。此外,下面的示例使用 ROW 和 INDIRECT 函数。
1、选择单元格 A1 到 A3。
2、在编辑栏上输入下面的公式,并按 Ctrl+Shift+Enter:
=LARGE(A5:A14,ROW(INDIRECT("1:3")))
值 3200、2700 和 2000 分别显示在单元格 A1 到 A3 中。
现在,了解一点 ROW 和 INDIRECT 函数可能会有所帮助。可以使用 ROW 函数创建连续的整数数组。例如,在练习工作簿中选择一个包含 10 个单元格的空列,在单元格 A5:A14 中输入下面的数组公式,然后按 Ctrl+Shift+Enter:
=ROW(1:10)
此公式创建由 10 个连续整数组成的一列。为了查看可能的问题,请在包含数组公式的区域上面插入一行(即第 1 行上)。Excel 调整行引用,并且此公式生成从 2 到 11 的整数。要修正该问题,可以向该公式添加 INDIRECT 函数:
=ROW(INDIRECT("1:10"))
INDIRECT 函数使用文本字符串作为参数(这是区域 1:10 由双引号括起的原因)。当插入行或移动数组公式时,Excel 不会调整文本值。因此,此 ROW 函数总是生成所需的整数数组。
让我们以前面使用过的公式为例 - =LARGE(A5:A14,ROW(INDIRECT("1:3"))) - 从内层的括号开始向外计算:INDIRECT 函数返回一组文本值,在这种情况下,为值 1 到 3。ROW 函数依次生成包含三个单元格的纵栏式数组。LARGE 函数使用单元格 A5:A14 中的值,并且它计算三次,每次都对应于 ROW 函数返回的每个引用。值 3200、2700 和 2000 返回到这三个单元格纵栏式数组中。如果要查找更多值,可以向 INDIRECT函数添加更多的单元格区域。
最后,可以将此公式与其他函数一起使用,例如 SUM 和 AVERAGE。