2

スプレッドシート(​​具体的にはGoogleスプレッドシート)の各行の最小値の0より大きい最大値を計算したいと思います。それが理にかなっていることを願っています。私のデータは次のとおりです。

0    6   7   8   1          
0   12  21  22  21          
0   10      18  24
0    7   9   1  17          
0   16  16  20              

だから、私は生成するある種のArrayFormulaが欲しいです:

 1
12
10
 1
16

そのうち最大のものを得ることができました。私は、明らかな解決策が機能しないことを読んで経験しました。それは次のとおりです。

=max(ArrayFormula(min(if(A:Z>0,A:Z,"")))

その一部である理由は、ArrayFormula(min(...0より大きいデータセット全体の最小値(ここでは1)を返します。良い回避策がない場合は、何らかの方法でデータを再配置するか、別々のセルで最小値を計算することを検討しますが、私は本当に1ステップの解決策を望んでいます。

4

3 に答える 3

0

データがA1:E5の範囲にあり、F1にあり、コピーされている場合:

=if(small(A1:E1,1)=0,small(A1:E1,2),small(A1:E1,1))  

また

=ArrayFormula(min(if(A2:E2>0,A2:E2,"")))  

行ごとに0より大きい最小値を返す必要があります。最大値は次のように計算されます。

=max(F1:F5) 
于 2014-07-23T01:59:55.127 に答える
0

max ArrayFunctionは存在しないため、回避策が唯一の方法です。範囲内にいくつかの数値があるとしますA1:C5。結果の範囲はD1:D5次のとおりです。

ここに画像の説明を入力してください

必要なのはセル内の単一の数式ですD1

=QUERY(QUERY({ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"\d+")),ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"[*](\d+)")*1)},"select Col1, min(Col2) where Col2 <>0 group by Col1 label min(Col2) ''"),"select Col2")

注意してください、それは遅く動作する可能性があります。

式の主要部分はクエリです。

select Col1, min(Col2) where Col2 <>0 group by Col1...

異なる結果(最大、最小、合計、平均、いくつかの計算など)を取得するように変更します

誰かが数式を調べたい場合は、ステップバイステップのソリューションを含むワークシートを次に示します。

于 2016-02-25T11:13:20.633 に答える
0

行ごとの最小値を取得する(一度に配列出力を許可する)ことに加えて、次のことを試してください。

=index(ArrayFormula(transpose(query(transpose(if(A:C>0, A:C,)),"select "&join("),","min(Col"&row(indirect("A1:A"&count(A:A))))&")"))),,2)
于 2016-02-25T21:12:12.697 に答える