Table of contents
在这个简短的教程中,我们将谈论Excel SMALL函数,它是如何工作的,以及如何使用它来寻找第N个最小的数字、日期或时间。
需要在工作表中找到几个最低的数字吗? 利用Excel的排序功能,这是很容易做到的。 不想把时间浪费在每次改变数据的重新排序上吗? SMALL函数将帮助你快速找到最低值、第二小值、第三小值,等等。
Excel的SMALL函数
SMALL是一个统计函数,用于返回数据集中的第n个最小值。
SMALL函数的语法包括两个参数,这两个参数都是必需的。
SMALL(array, k)
在哪里?
- 阵列 - 一个数组或一个单元格范围,从中提取最小的值。
- K - 一个整数,表示从最低值开始返回的位置,即第k个最小值。
该功能在Office 365、Excel 2021、Excel 2019、Excel 2016、Excel 2013、Excel 2010和更早的所有版本的Excel中都可用。
提示:要找到符合标准的第k个最低值,可使用Excel SMALL IF公式。
Excel中的基本SMALL公式
一个SMALL公式的基本形式是非常容易建立的--你只需指定范围和要返回的最小项的位置。
在B2:B10的数字列表中,假设你想提取第3个最小的值。 公式很简单,就是:。
=small(b2:b10, 3)
为了使你更容易检查结果,B列以升序排序。
关于SMALL功能,你应该知道的4件事
下面的使用说明将帮助你更好地理解SMALL函数的行为,避免在建立你自己的公式时出现混淆。
- 任何 空白单元格 , 文本 值,以及 合理 中的TRUE和FALSE值。 阵列 参数被忽略。
- 如果 阵列 包含一个或多个 误差 ,会返回一个错误。
- 如果有 重复 在 阵列 例如,如果两个单元格包含数字1,而SMALL函数被配置为返回最小值和第二小值,那么在这两种情况下你都会得到1。
- 假设n是 阵列 ,SMALL(array,1)将返回最低值,而SMALL(array,n)将选取最高值。
如何在Excel中使用SMALL函数--公式示例
现在,让我们再来看看Excel SMALL函数的一些超越其基本用途的例子。
找到底部的3、5、10等值
正如你已经知道的,SMALL函数被设计用来计算第n个最低值。 这个例子显示了如何最有效地做到这一点。
在下面的表格中,假设你想找到底部的3个值。 为此,在不同的单元格(在我们的例子中是D3、D4和D5)中输入数字1、2和3。 然后,在E3中输入以下公式并向下拖到E5。
=small($b$2:$b$10, d3)
在E3中,该公式使用D3中的数字来提取最小的值。 k 关键是要提供适当的单元格引用,以便在其他单元格中正确复制公式:绝对值为 阵列 和相对的为 k .
不想麻烦地手动输入等级吗? 使用ROWS函数与一个 扩大范围 参考,以提供 k 为此,我们为第一个单元格做绝对引用(或只锁定行坐标,如B$2),为最后一个单元格做相对引用。
=small($b$2:$b$10, rows(b$2:b2))
结果是,当公式被复制到下一列时,范围参考会扩大。 在D2中,ROWS(B$2:B2)产生1,用于 k 在D3中,ROWS(B$2:B3)产生2,我们得到第二个最低成本,以此类推。
只要把公式复制到5个单元格中,就可以得到底部的5个值。
底部N值之和
想找到一个数据集中最小的n个值的总和吗? 如果你已经像前面的例子中显示的那样提取了这些值,最简单的解决方法是使用SUM公式,比如。
=SUM(E3:E5)
或者你可以通过使用SMALL函数和SUMPRODUCT一起做一个独立的公式。
产品(小) 阵列 , {1, ..., n }))为了得到我们这组数据中最下面3个值的总和,公式是这样的。
=sumproduct(small(b2:b10, {1,2,3})
SUM函数将产生相同的结果。
=sum(small(b2:b10, {1,2,3}))
注意:如果你使用 单元格引用 而不是数组常数,因为 k 在支持动态数组的Excel 365中,无论哪种情况,SUM SMALL都可以作为一个普通公式使用。
这个公式如何运作。
在常规公式中,SMALL返回一个范围内的第k个最小值。 在这种情况下,我们为k参数提供一个类似{1,2,3}的数组常数,迫使它返回一个最小的3个值的数组。
{29240, 43610, 58860}
SUMPRODUCT或SUM函数将数组中的数字相加,并输出总数。 就是这样!
INDEX MATCH SMALL公式,获得最小的匹配。
当你希望检索一些与最小值相关的数据时,使用经典的INDEX MATCH组合,用SMALL作为查询值。
INDEX( return_array , MATCH(SMALL( lookup_array , n ), lookup_array , 0))在哪里?
- 返回数组 是一个范围,从中提取相关数据。
- 查找_数组 是一个范围,用于搜索最低的第n个值。
- N 是感兴趣的最小值的位置。
例如,为了得到成本最低的项目名称,E3中的公式是。
=index($a$2:$a$10, match(small($b$2:$b$10, d3), $b$2:$b$10, 0)
其中A2:A10为项目名称,B2:B10为成本,D3为从小到大的排名。
把公式复制到下面的单元格(E4和E5),你将得到3个最便宜的项目的名称。
注意事项。
- 这个解决方案对于没有重复的数据集来说效果很好。 但是,数字列中的两个或多个重复值可能会在排名中产生 "平局",这将导致错误的结果。 在这种情况下,请使用更复杂一点的公式来打破平局。
- 在Excel 365中,这项任务可以借助新的动态数组函数来完成。 除了更简单之外,这种方法还自动解决了并列问题。 完整的细节,请参见如何在Excel中过滤最底层的N个值。
用一个公式将数字从低到高排序
相信大家都知道如何用Excel的排序功能将数字按顺序排列。 但你知道如何用公式进行排序吗? Excel 365的用户可以用新的SORT函数来做一个简单的方法。 在Excel 2019、2016和更早的版本中,SORT不起作用,唉。 但要有一点信心,SMALL会来救你:)
像第一个例子一样,我们使用ROWS函数和一个扩展的范围引用来增加 k 在复制公式的每一行中,以1为单位。
=small($a$2:$a$10, rows(a$2:a2))
在第一个单元格中输入公式,然后将其向下拖动到与原始数据集(本例中为C2:C10)中的数值一样多的单元格。
提示:要分类 下降 ,使用LARGE函数而不是SMALL。
Excel中日期和时间的小公式
由于日期和时间也是数字值(在Excel内部系统中,日期以连续的数字存储,时间以小数的分数存储),SMALL函数也可以处理它们,而不需要你做任何额外的努力。
正如你在下面的截图中看到的,我们用于数字的基本公式对日期和时间也有很好的效果。
=small($b$2:$b$10, d2)
用小公式找出最早的3个日期。
小公式,以获得最短的3倍。
下一个例子显示了SMALL函数如何帮助你完成一个与日期有关的更具体的任务。
查找与今天或指定日期最接近的前一个日期
在一个日期列表中,假设你想找到离指定日期最近的日期,这可以通过使用SMALL函数和COUNTIF组合来实现。
在B2:B10的日期列表和E1的目标日期中,以下公式将返回最接近目标日期的先前日期。
=SMALL(B2:B10, COUNTIF(B2:B10, "<"&E1))
要提取一个比E1中的日期早两个日期的日期,即前一个但一个日期,公式为:。
=SMALL(B2:B10, COUNTIF(B2:B10, "<"&E1)-1)
要找到一个过去的日期 最接近于今天 ,使用TODAY函数作为COUNTIF的标准。
=SMALL(B2:B10, COUNTIF(B2:B10, "<"&TODAY())
提示:为了防止在找不到符合标准的日期时出现错误,你可以用IFERROR函数包住你的公式,像这样。
=IFERROR(SMALL(B2:B10, COUNTIF(B2:B10, "<"&E1)-1), "未找到" )
这些公式是如何工作的。
一般的想法是用COUNTIF计算比目标日期小的日期数量。 而这个计数正是SMALL函数所需要的。 k 争论。
为了更好地掌握这个概念,让我们从另一个角度来看看它。
如果2020年8月1日(E1中的目标日期)出现在我们的数据集中,它将是列表中的第七大日期。 因此,有六个日期比它小。 这意味着,第六个最小的日期是最接近目标日期的前一个日期。
因此,首先我们计算有多少个日期比E1的日期小(结果是6)。
COUNTIF(B2:B10, "<"&E1)
然后,将计数插入SMALL的第二个参数。
=small(b2:b10, 6)
为了得到前一个但是一个日期(在我们的例子中是第5个最小的日期),我们从COUNTIF的结果中减去1。
如何在Excel中突出显示底部数值
要用Excel条件格式化突出显示表格中最小的n个值,你可以使用内置的Top/Bottom选项,或者根据SMALL公式设置你自己的规则。 第一种方法更快、更容易应用,而第二种方法提供更多的控制和灵活性。 下面的步骤将指导你创建一个自定义规则。
- 选择你想突出显示底部数值的范围。 在我们的例子中,数字在B2:B10,所以我们选择它。 如果你想突出显示整个行,那么选择A2:B10。
- 关于 首页 选项卡,在 风格 组,点击 条件性格式化 > 新规则 .
- 在 新的格式化规则 对话框,选择 使用一个公式来决定哪些单元格需要格式化。
- 在 格式化该公式为真的数值 框,输入一个类似这样的公式。
=B2<=SMALL($B$2:$B$10, 3)
其中B2是要检查的数字范围的最左边的单元格,$B$2:$B$10是整个范围,而3是 n 底部数值要突出。
在你的公式中,请注意参考类型:最左边的单元格是相对参考(B2),而范围是绝对参考($B$2:$B$10)。
- 点击 格式 按钮并选择你喜欢的任何格式。
- 点击两次 "确定",关闭两个对话窗口。
完成了!B列中最下面的3个值被高亮显示。
更多信息,请参见《基于公式的Excel条件格式化》。
Excel的SMALL函数不工作
正如你刚才从我们的例子中看到的,在Excel中使用SMALL函数是非常容易的,你不太可能遇到任何困难。 如果你的公式不工作,最有可能是#NUM!错误,这可能是由于以下原因造成的。
- 阵列 是空的或不包含一个数字值。
- ǞǞǞ k 值小于零(一个愚蠢的拼写错误会让你损失数小时的故障排除!)或超过数组中的值的数量。
这就是如何在Excel中使用SMALL公式来寻找并突出显示一组数据中的底部数字。 如果你知道该函数在其他情况下有什么用处,非常欢迎你在评论中分享。 感谢你的阅读,希望下周在我们的博客上见到你!
供下载的实践工作手册
Excel小型公式示例(.xlsx文件)。