2016-02-23 49 views
0

的谷歌表格函數arrayformula的文檔說ARRAYFORMULA在谷歌表格帶有嵌套數組函數

啓用值的顯示從數組公式爲多個行和/或列,並且使用非陣列的返回函數與數組。

這在以下情況下,簡單地劃分在列中所有值的工作以及一個五:

=arrayformula(A2:A/5) 

現在我想通過0至下限的結果每一行中,即在行n我想計算max(An, 0)。這是我的非工作的嘗試:

=arrayformula(max(A2:A/5, 0)) 

max本身就很好地工作,而無需使用arrayformula,也就是說,如果我填max(A2/5, 0)下的所有行,我得到我想要的東西。我希望max函數能夠在兩個單值上操作,單個值在A n和常數0中找到。arrayformula方法不起作用的原因是max「竊取」範圍,聚合整個範​​圍A2:A成一個單一的數字。因此,arrayformula僅對此數字進行操作,並且完全忽略範圍A2:A,從而爲所有單元格生成相同的值。

如何使arrayformula解釋範圍A2:A,或者說,我該如何防止max函數這樣做,並讓它在兩個單值上運行?

(我能解決的if功能,而不是問題,但似乎並沒有特別優雅,需要大量的代碼重複,尤其是因爲我真正的問題採用更復雜的算法和minmax的組合。)

+0

你是什麼意思的「下限」?請提供一個輸入值列表和所需輸出列表的示例。 – daniel

+0

下限我的意思是結果應該至少爲0.因此'最大'。除5以外只是一個例子,爲arrayformula提供了一些有意義的東西。輸入= 10 - >輸出= 2。輸入= -10 - >輸出= 0. –

+0

請提供如下示例:input = {1,2,-3,5,10,0,-1},output = {1,2,5,10} 。它看起來像你想要的功能是'filter()' – daniel

回答

1

MAX是一個聚合函數:這些函數對一組值進行計算並返回一個值。您可能要檢查,如果這個工程(假設在山坳你的價值觀)

=ArrayFormula(if(len(A2:A),--(A2:A/5>0)*(A2:A/5),)) 
+0

謝謝,但問題已經指出'max'是一個聚合函數。真正的問題更多地涉及到並且需要更多的'min'嵌套等。因此,您的解決方案將適用於我發佈的SSSCE,但不能解決一般問題。 –

+0

好的。如果你不顯示它,沒有辦法看到'一般問題'。正如Daniel已經提到的,最終目標的一些澄清肯定會有所幫助。 – JPV

0

你有兩個選擇:

=arrayformula(if(A2:A>0,A2:A/5,0)) 

=arrayformula(filter(A2:A,A2:A>0)/5) 

第一個選項會給你零當有一個負數時。第二個選項將跳過零,所以你可能會得到一個更短的數組。

+0

我感謝你的努力,@丹尼爾,但正如我所說我可以很容易地解決這個if函數,但我真正的問題是更多的參與其中一個簡單的,如果不會工作。我認爲,如果我提出更復雜的問題,這將無濟於事。請注意,對於使用'filter'的解決方案,您實際上首先不需要'arrayformula'。 –