从最后3个非空白单元格中获取值

我目前有一个类似于下面的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 

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

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

这是另外一个:

 =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/

它确定从中求和的列,因为空白单元为零,所以混合了多less并不重要。

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

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

我知道这里的专业人士会讨厌这个。 但是我使用数十万行和数百万个单元格中的数据,而且我更喜欢帮助行,并且每天都使用Array公式的复杂公式。 因为它会削减计算分数。 即使维护是更多的工作,我花费更less的时间来修复一个公式,然后等待每个数据更改的数组计算(对于我来说,我的数据每10分钟更改一次)。因此,每10分钟数百万个单元格上的数十万个数组将根本不工作。 所以,这只是一个select。

 =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个数字,然后将其相加。

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

另一个工作的非数组公式:

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

简单地说就是总结一下有史以来最后的一个数。

Newbee警报:我知道这个post是老的,但是如果有人仍然在那里,我很想得到公式的派生提供的帮助迪克提供,我想运行数行例如[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]. 

如果任何人都能摆脱光线,我会非常感激。

非常感谢:Ryan