【问题标题】:SUMIF for first 5 cells meeting criteria满足标准的前 5 个单元格的 SUMIF
【发布时间】:2014-11-30 20:54:29
【问题描述】:

简单的Excel表格如

       A     B
    1  John  5
    2  John  7
    3  John  9
    4  Jill  25
    5  John  21
    6  John  22
    7  Jill  50
    8  John  100
    9  John  2000
   10  Jack  4

使用 SUMIF,我们可以返回分配给 John 的总数。

=SUMIF(A:A,"John",B:B)  

有没有办法只返回符合条件的前 5 个值?或者有没有办法为约翰返回 5 个最小值?要么工作。

【问题讨论】:

  • B 列中的所有值都是唯一的吗?如果第五个最小的数字有重复,那么它是否可以将超过 5 个数字相加?
  • @jbarker2160 B 中的所有值都是唯一的。
  • 我们可以使用所有的 C 列吗?
  • B 列的条目是否严格增加?您使用的是哪个版本的 Excel?
  • 我可以用一些 VBA 作弊吗?

标签: excel conditional-statements sumifs


【解决方案1】:

在C1中输入:

=IF(A1="John",1,0)

在C2中输入:

=IF(A2="John",1+MAX($C$1:C1),0)

然后抄下来。然后使用:

=SUMPRODUCT((A:A="John")*(B:B)*(C:C<6))

。

【讨论】:

  • 不幸的是,A 列中有 20 个独特的项目,所有这些项目都需要相同的总和。我相信我需要在 D-W 列中执行此操作 20 次,为 A 中的每个唯一项目执行一次?
【解决方案2】:

公式:

=IF(COUNTIF($A$1:A1,A1)<=5,SUMIF($A$1:A1,A1,$B$1:B1),"")

为每个人显示的最后一个值将是该人前(最多)5 个值的总和。只需复制并粘贴值然后排序。

【讨论】:

  • 谢谢。很接近。但与以下相同的评论。不幸的是,A 列中有 20 个独特的项目,所有这些项目都需要相同的总和。我相信我需要在 D-W 列中执行此操作 20 次,为 A 中的每个唯一项目执行一次?
  • 不,你不会。它为您提供每个名称的总和。
【解决方案3】:

哦,好吧。我会继续假设您拥有 Excel 2010 或更高版本。

例如D1中的“John”,在E1中输入这个公式:

=SUMIFS($B$1:$B$10,$A$1:$A$10,D1,$B$1:$B$10,"

复制下来,为 D2、D3 等中的名称提供相似的结果。

问候

【讨论】:

    【解决方案4】:

    假设 John 在 D1 中,您可以使用此数组公式得到 John 的 5 个最小值的总和

    =SUM(SMALL(IF(A$1:A$100=D1,B$1:B$100),{1,2,3,4,5}))

    用 CTRL+SHIFT+ENTER 确认并复制下来以适用于列表中的所有名称

    【讨论】:

      【解决方案5】:

      您的样本数据将显示前 5 个或最低 5 个的相同结果,因为 John 的数字按升序排列。如果情况并非总是如此,或者如果您需要提供与早于 2010 年的 Excel 版本的兼容性,我将提供以下内容。请注意,在我的示例图像中,我按降序排列了数值来说明差异。

      对于 John 的 前 5 个值(示例图像中的 E2):

      =SUM(INDEX(($B$2:$B$11)*($A$2:$A$11=D2)*(ROW($1:$10)<=SMALL(INDEX(ROW($1:$10)+($A$2:$A$11<>D2)*1E+99,,), 5)),,))
      

      对于 John 的 最低 5 值(示例图像中的 F2):

      =SUMPRODUCT(SMALL(INDEX(($B$2:$B$11)+($A$2:$A$11<>D2)*1E+99,,),ROW($1:$5)))
      

      这些是标准公式。任何数组处理都由INDEX 和/或SUMPRODUCT 提供。 不需要 Ctrl+Shift+Enter。当匹配值少于 5 个时,可能需要某种形式的错误控制;一个简单的IF(COUNTIF(), &lt;formula&gt;) 就足够了。在转录这些类型的公式时,请务必注意 ROW(1:10) 是 B2:B11 或 A2:A11 中的位置,而不是工作表上的实际行。

                        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-23
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多