10

我目前有一个类似于以下的 excel 工作表(# 代表空白单元格

1   2   3   4   5   6   7
37  21  30  32  25  22  34
#   17  26  28  27  17  31
#   #   #   #   #   #   38
25  23  27  35  33  #   #
27  11  23  #   #   #   #

在第 8 列中,我需要最后 3 个非空白单元格的总和(列数定期增加)。

我需要实现的一个示例如下:

1   2   3   4   5   6   7       8
37  21  30  32  25  22  34      25+22+34=81
#   17  26  28  27  17  31      27+17+31=75
#   #   #   #   #   #   38      N/A
25  23  27  35  33  #   #       27+35+33=95
27  11  23  #   #   #   #       27+11+23=61

我已经设法非常接近该LARGE功能,但显然这只给了我最大的 3 个,而不是最后 3 个非空白:

=(LARGE(C3:J3,1)+LARGE(C3:J3,2)+LARGE(C3:J3,3))
4

4 回答 4

8

这是另一个:

=IF(COUNT(A2:G2)<3,"NA",SUM(G2:INDEX(A2:G2,LARGE(COLUMN(A2:G2)*(A2:G2<>""),3))))

来自http://dailydoseofexcel.com/archives/2004/05/03/sum-last-three-golf-scores/

它标识要从中求和的列,并且由于空白单元格为零,因此混合了多少并不重要。

于 2013-04-28T12:43:22.513 回答
3

如果数据在 A1:G1 中,请在 H1 中尝试此公式

=IF(COUNT(A1:G1)>2,SUM(OFFSET(A1,0,MATCH(9.99E+307,A1:G1)-1,1,-3)),NA())

于 2013-04-28T12:00:14.323 回答
2

我知道这里的专业人士会讨厌这个。但我使用数十万行和数百万个单元格中的数据,而且我更喜欢辅助行和复杂的公式,而不是数组公式。因为它将计算减少到分数。即使维护工作量更大,我花更少的时间修复一个公式,然后等待每次数据更改的数组计算(对我来说,我的数据每 10 分钟更改一次)因此,每 10 分钟数百万个单元格上的数十万个数组根本行不通。所以,这里只是一个替代方案。

=IF(COUNT(A2:G2)<3,"NA",IF(COUNT(E2:G2)=3,SUM(E2:G2),IF(COUNT(D2:G2)=3,SUM(D2:G2),
 IF(COUNT(C2:G2)=3,SUM(C2:G2),IF(COUNT(B2:G2),SUM(B2:G2),IF(COUNT(A2:G2)=3,
 SUM(A2:G2)))))))

如果没有 3 个值求和,它将返回 NA,否则从右到左工作将检查第一个单元格,从该单元格到末尾有 3 个数字,然后将其相加。

如果您的数据确实涉及更多列,那么您的问题。您可以使用动态范围来稍微清理代码。

另一个有效的非数组公式:

=SUM(IF(COUNT(A2:G2)=3,A2:G2,IF(COUNT(B2:G2)=3,B2:G2,IF(COUNT(C2:G2)=3,C2:G2,
IF(COUNT(D2:G2)=3,D2:G2,IF(COUNT(E2:G2)=3,E2:G2,"NA"))))))

简单地说,将总和从末尾开始的范围为 3。

于 2013-04-28T17:16:17.900 回答
1

Newbee 警报:我知道这篇文章已经过时了,但是如果还有人在那里,我很想获得关于 Dick 提供的公式的派生的帮助,我想在几行上运行计数,例如 [2 在这种情况下] :

=IF(COUNT(A1:G2)<3,"NA",SUM(G2:INDEX(A1:G2,LARGE(COLUMN(A1:G2)*(A1:G2<>""),3))))

最终,我试图将最后三个单元格的总和与运行 12 的数字相加

[A:L=months of year] by several rows down [1:5=consecutive years].

如果有人可以阐明,我将不胜感激。

非常感谢:瑞恩

于 2015-04-27T13:18:26.957 回答