从最后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
我已经设法与LARGE
function非常接近,但显然这只给了我最大的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