2017-05-14 117 views
0

我有一個包含兩列數據的Google表格。 A單調遞增,具有許多重複項(基於粗時間戳),而B實質上是隨機的。底部有許多空行等待未來的數據。它類似於以下內容:排除Google表格中的彙總計算範圍中的最後一個值

 A B 
1 5 43 
2 5 77 
3 13 8 
4 21 34 
5 27 68 
6 27 90 
7 
8 
9 
10 

我試圖寫一個檢查所有的(非空)值的列除了最後一個幾個公式。例如,我想找到排除最新值的B的最大值,所以結果應該是77B2而不是90B6

如果該範圍內的值進行了嚴格的增加和獨特的,我可以的A值過濾成C,不包括任何值等於最大值(只有最後一個條目),然後採取一系列的MAX(..)。但是,我的數據沒有這個屬性;最終的價值可能會被重複,並且重複將被不恰當地忽略。

 C        D   E 
1 =FILTER(A:A, A:A < MAX(A:A)) =MAX(C:C) This produces A4's 21 instead of A5's 27. 

,如果我們有遞增指數使用的第三列類似的方法將工作:

 A B C D        E 
1 5 43 9 =MAX(FILTER(C:C, A:A <> "")) Value of index in last populated row. 
2 5 77 10 =MAX(FILTER(A:A, C:C < D1)) Maximum value from a row with lower index. 
3 13 8 11 
4 21 34 12 
5 27 68 13 
6 27 90 14 
7   15 
8   16 
9   17 
10   18 

但是我正在尋找一種不需要修改原來的電子表格中的解決方案,因爲這並不總是可能的。我不能只創建一個新的IndexSheet與只不過是一個索引列,並參與進來,這樣,而不是...

 A B C 
1 5 43 =MAX(FILTER(IndexSheet!A:A, A:A <> "")) 
2 5 77 =MAX(FILTER(A:A, IndexSheet!A:A < C1)) 
... 

...因爲這要求IndexSheet有相同數量的行爲的數據表,並會隨着更多數據的添加而中斷。

在不修改原始數據表或依賴數據屬性(超出值爲數字和行爲空或滿)的情況下,是否有任何方法在排除最後一個值的情況下對範圍執行聚合計算?

回答

1

您可以使用indirectaddress公式來創建排除最後一排

=max(indirect("A1:"&Address(count(A:A)-1,1))) 

count功能使用戶可以減去1,以排除最後一行在列A.非空單元格的數量的動態範圍。

你用這個數字來構建使用"A1:"&address(row no, Col no)它在你的榜樣情況下應該是A1:$A$5

使用此字符串採用間接法indirect(A1:$A$5)引用您的細胞和引用傳遞到max函數來確定地址在該範圍內最大。

1

從另一個片的嘗試:

=MAX(Sheet1!B1:indirect("Sheet1!B"&count(Sheet1!B:B)-1)) 
0

我們可以用FILTER()ROW()功能來實現這一點:

D 
1 =MAX(FILTER(Data!A:A, 
       ROW(Data!A:A) < MAX(FILTER(ROW(Data!A:A), 
              Data!A:A <> "")))) 

我們使用FILTER(ROW(DATA!A:A), Data!A:A <> ""))獲得非空行的行號的數組,並使用MAX(...)取最後一個行號。我們用這個來排除最後一行,通過從FILTER(Data!A:A, ROW(Data!A:A) < ...)過濾掉較低的行號中的值。我們將MAX(...)應用於此過濾數組,並獲得我們正在查找的結果。

相關問題