2013-04-28 85 views
8

我現在有類似於以下的Excel工作表(#的表示空白單元格)從過去的3非空單元中的值獲取連續

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

+1很好的問題 – whytheq 2013-04-28 11:28:33

+1

不要ü想VBA或NON VBA解決方案? – 2013-04-28 11:31:13

+2

VBA通​​過循環第8列確實可行 - 然後在循環內部,您需要從左向右移動以查找前三個非空白,並且每次都爲第8列構建公式或計算總計。我不會寫這個,因爲我懷疑其他人會使用工作表函數,如果可用的話,這是更簡單的路由 – whytheq 2013-04-28 11:31:41

回答

7

這裏的另一個問題:

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

它標識列從和自空白單元格,總結爲零,不要緊多少相互交織。

+2

+1迪克,當然你需要CTRL + SHIFT + ENTER ........ – 2013-04-28 13:36:52

+0

完美迪克,謝謝! – lethalMango 2013-04-28 14:21:00

+0

+ 1 Good One Dick! :) – 2013-04-28 15:19:53

3

如果數據是在A1:G1嘗試在H1

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

這個公式
+0

+ 1那麼,我會被詛咒!大聲笑。我也有一個準備好的公式,但是關鍵是它不起作用,如果有兩個相同的數字...... – 2013-04-28 12:02:52

+0

這似乎在大多數情況下工作,但在A1中使用以下內容:G1我得到58而不是88(30 #25#33##) - 再次,#是空的 – lethalMango 2013-04-28 12:13:11

+0

我從你的例子中假設在這些數字中不會有空格,試試迪克的版本.... – 2013-04-28 13:34:17

2

我知道這裏的優點會討厭這一個。但是,我使用數十萬行和數百萬個單元格中的數據,而且我更喜歡幫助行,以及任何一天通過Array公式使用複雜公式。因爲它會削減計算分數。即使維護工作更多,我也會花費更少的時間來修改公式,然後等待每次數據更改時對數組進行計算(對於我而言,每隔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

1

Newbee戒備。我知道後是舊的但是如果任何人仍然在那裏,我渴望得到上迪克提供的式的衍生物幫助由此我想在若干行[在這種情況下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]. 

如果任何人都可以闡明我會非常感激。

非常感謝:瑞安