用Excel的SMALL函数查找并突出显示最低值

  • Share This
Michael Brown

在这个简短的教程中,我们将谈论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函数的行为,避免在建立你自己的公式时出现混淆。

    1. 任何 空白单元格 , 文本 值,以及 合理 中的TRUE和FALSE值。 阵列 参数被忽略。
    2. 如果 阵列 包含一个或多个 误差 ,会返回一个错误。
    3. 如果有 重复 阵列 例如,如果两个单元格包含数字1,而SMALL函数被配置为返回最小值和第二小值,那么在这两种情况下你都会得到1。
    4. 假设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公式设置你自己的规则。 第一种方法更快、更容易应用,而第二种方法提供更多的控制和灵活性。 下面的步骤将指导你创建一个自定义规则。

    1. 选择你想突出显示底部数值的范围。 在我们的例子中,数字在B2:B10,所以我们选择它。 如果你想突出显示整个行,那么选择A2:B10。
    2. 关于 首页 选项卡,在 风格 组,点击 条件性格式化 > 新规则 .
    3. 新的格式化规则 对话框,选择 使用一个公式来决定哪些单元格需要格式化。
    4. 格式化该公式为真的数值 框,输入一个类似这样的公式。

      =B2<=SMALL($B$2:$B$10, 3)

      其中B2是要检查的数字范围的最左边的单元格,$B$2:$B$10是整个范围,而3是 n 底部数值要突出。

      在你的公式中,请注意参考类型:最左边的单元格是相对参考(B2),而范围是绝对参考($B$2:$B$10)。

    5. 点击 格式 按钮并选择你喜欢的任何格式。
    6. 点击两次 "确定",关闭两个对话窗口。

    完成了!B列中最下面的3个值被高亮显示。

    更多信息,请参见《基于公式的Excel条件格式化》。

    Excel的SMALL函数不工作

    正如你刚才从我们的例子中看到的,在Excel中使用SMALL函数是非常容易的,你不太可能遇到任何困难。 如果你的公式不工作,最有可能是#NUM!错误,这可能是由于以下原因造成的。

    • 阵列 是空的或不包含一个数字值。
    • ǞǞǞ k 值小于零(一个愚蠢的拼写错误会让你损失数小时的故障排除!)或超过数组中的值的数量。

    这就是如何在Excel中使用SMALL公式来寻找并突出显示一组数据中的底部数字。 如果你知道该函数在其他情况下有什么用处,非常欢迎你在评论中分享。 感谢你的阅读,希望下周在我们的博客上见到你!

    供下载的实践工作手册

    Excel小型公式示例(.xlsx文件)。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.