2016-11-24 104 views
2

我試圖找到連續7個最近條目的平均值,如 this 電子表格中所示。如何查找Google表格中某列中最後7個值的平均值?

我發現了幾個類似於我的問題,但對於答案的工作方式我還是很困惑。類似於我的問題可以在我的電子表格的左側找到。

我認爲這些公式對我來說可以用幾個簡單的調整來使用哪些值,但我似乎無法弄清楚。如果有人能解釋一個現有的答案或想出另一個可行的答案,我將不勝感激。

電子表格每天更新,所以我需要一些東西,隨着越來越多的數據添加到列中,這些東西會繼續工作。

回答

1

嘗試:

=round(AVERAGE(OFFSET(H1,MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))-7,,7))) 

這裏的working sample

說明

我們所得到的最後一個非空行:MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))

然後用offset公式我們得到的範圍一列中的最後7個單元格。

然後只使用AVERAGE

更多信息

您可能會發現更多關於這裏找到最後一個非空行: Selecting the last value of a column

+0

這絕對作品,但我真的不知道怎麼樣。數組公式函數是什麼,使用<>和 - ? – beninato

1

另一種方法是使用INDEX和MATCH。第一場比賽找到最後一個數字在該範圍內的位置,並且距離該數字爲6:第二場比賽找到該範圍中最後一個數字的位置。通過INDEX函數傳遞給你一個參考,你可以使用它給出一個7個單元格供AVERAGE使用。

=average(index(H:H,match(999,H:H)-6):index(H:H,match(999,H:H))) 

所以我的答案是像你Link2

最大的障礙在這裏,如果你有範圍內的文本單元(如「無」),這是更爲困難的工作,開始其細胞從而獲得平均7個細胞。我想我知道如何使用OFFSET在Excel中執行此操作,但在Google表格中,抵消似乎不能以相同的方式工作。

但是我可以看到在您的Link3中有一個解決方案,如果您將A:A更改爲H:H並將SUM更改爲AVERAGE,則該解決方案應該適用於您。我測試的平均值在過去10個單元,其中包括一個「無」小區:

=ArrayFormula(AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10"))) 

,並讓正確的答案61.8。

方法數組公式的工作原理是,不是將單個值傳遞給函數,而是傳遞整個範圍或數組(值列表),並且函數逐個處理它們。上面的公式採用整列H:H並按降序對行號進行排序,但那些不包含數字的單元在乘法中給出零並排序到底部。然後查詢將頂部(在我的情況下)10個單元格傳遞給AVERAGE。

BTW,這並不必須聲明爲數組公式:這也適用

=AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10")) 
+0

感謝您的迴應;不過,我可能會用Max的答案。我看到你也使用了數組公式函數,你能解釋它的作用嗎? – beninato

+0

A將爲我的答案添加第二個公式的解釋(第一個公式不是數組公式) –

相關問題