SUMIF用于符合标准的前5个单元格

时间:2014-10-06 14:53:13

标签: excel conditional-statements sumifs

简单的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个最小值?要么工作。

5 个答案:

答案 0 :(得分:4)

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

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

= SUMIFS($ B $ 1:$ B $ 10,$ A $ 1:$ A $ 10,D1,$ B $ 1:$ B $ 10, “&LT =” &安培; AGGREGATE(15,6,$ B $ 1:$ B $ 10 /($ A $ 1:$ A $ 10 = D1),5))

向下复制,为D2,D3等中的名称提供类似的结果

此致

答案 1 :(得分:2)

公式:

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

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

答案 2 :(得分:2)

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

对于约翰的前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)),,))

对于约翰的最低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(), <formula>)就足够了。在转录这些类型的公式时,重要的是要注意ROW(1:10)是 B2中的位置:B11或A2:A11,而不是工作表上的实际行。

enter image description here

答案 3 :(得分:0)

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))

pic

答案 4 :(得分:0)

假设在D1中使用John,您可以使用此数组公式

获得John的5个最小值的总和

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

使用 CTRL + SHIFT + ENTER 进行确认,然后向下复制以适用于列表中的所有名称