我目前有一个类似于以下的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))
答案 0 :(得分: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/
它标识要汇总的列,由于空白单元格为零,因此混合了多少并不重要。
答案 1 :(得分:3)
如果数据在A1:G1中,请在H1
中尝试此公式 =IF(COUNT(A1:G1)>2,SUM(OFFSET(A1,0,MATCH(9.99E+307,A1:G1)-1,1,-3)),NA())
答案 2 :(得分: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。
答案 3 :(得分:1)
Newbee警告:我知道这个帖子已经老了但是如果有人仍然在那里,我很想得到Dick公式的衍生物的帮助,我想在几行上运行计数例 [在这种情况下为2]:
= --home-dir /var/lib/foo-product/gnupg
最终,我试图将最后三个单元格中的数字与12次交叉中的数字相加
IF(COUNT(A1:G2)<3,"NA",SUM(G2:INDEX(A1:G2,LARGE(COLUMN(A1:G2)*(A1:G2<>""),3))))
如果有人能够解决问题,我会非常感激。
非常感谢:Ryan