2017-06-24 48 views
2

我與Excel公式掙扎:Excel公式來概括每5行

需要:我需要一個公式,以每5行地方值和上相應的行。 (見下表)

這裏就是我有這麼遠,但它是不太有:

=SUM(OFFSET($A$2,(ROW()-ROW($B$2))*5,,5,)) 

    | A | B | C 
----------------------- 
1 | 5 | 37 | 37 
2 | 10 | 24 | 37 
3 | 7 | 17 | 37 
4 | 7 | 0 | 37 
5 | 8 | 0 | 37 
6 | 1 | 0 | 24 
7 | 3 | 0 | 24 
8 | 5 | 0 | 24 
9 | 5 | 0 | 24 
10 | 10 | 0 | 24 
11 | 5 | 0 | 17 
12 | 1 | 0 | 17 
13 | 8 | 0 | 17 
14 | 2 | 0 | 17 
15 | 1 | 0 | 17 

列 「A」= VALUES

「B」 列=電流輸出(W /上述公式)

欄中的 「C」=所需的輸出

感謝您的幫助。

回答

3

使用INDEX的另一種方式,而不是OFFSET

=SUM(INDEX(A:A,FLOOR(ROW()-1,5)+1):INDEX(A:A,FLOOR(ROW()-1,5)+5)) 

enter image description here

說明

地板函數將第一個參數的值,並舍入它下降到第二個參數的最接近的倍數。在第一個INDEX語句中,對於第1-5行,在FLOOR語句中,從行號中減去0-4。 FLOOR語句將所有這些值舍入爲零,因此,在添加一個之後,前5行中的每一行都會得到1的值。

第二個INDEX和FLOOR語句的工作原理是相同的,除了在前5行添加5以使其值爲5。

INDEX返回一個引用,所以將INDEX(A:A,1):INDEX(A:A,5)取到列A的前5個單元格是有效的,然後你可以將它們合併。

對於第6-10行,FLOOR語句以相同的方式產生5,因此在分別添加1和5之後,會得到A列的單元格6-10等等。

Row()  Row()-1 FLOOR(Row()-1) FLOOR(Row()-1)+1 Floor(Row()-1)+5 
1   0   0    1     5 
2   1   0    1     5 
3   2   0    1     5 
4   3   0    1     5 
5   4   0    1     5 
6   5   5    6     10 
7   6   5    6     10 
8   7   5    6     10 
9   8   5    6     10 
10  9   5    6     10 
+0

非常感謝。像魅力一樣工作! 請你分解公式的作用......特別是'Floor'和'Row'的組合作爲索引參數嗎? – emmanueledu

+1

是沒有問題,我會將它添加到我的答案。 –

2

這是欺騙,但是在B5輸入:

=IF(MOD(ROW(),5)=0,SUM(A1:A5),B6) 

則兩個向上複製此細胞和向下:

enter image description here

的公式在B1通過B4是無效的,但會產生正確的結果。

+1

我嘗試過這樣做,但是它在複製超過10,000行的表時有點不穩定。還有其他建議嗎? – emmanueledu

4

B1輸入公式:

=SUM(OFFSET($A$1,5*INT((ROW()-1)/5),,5)) 

並拖動/複製下來。

測試〜10K行隨機數,它的工作是合理的。

enter image description here

+1

你的公式讓它看起來太簡單了。謝謝你一堆 – emmanueledu